最基本的判断数组中是否存在重复元素。
以时间代价为标准的做法是利用一个数据结构O(n)大小的来保存所有出现的元素,遍历数组,当重复出现返回true,时间代价是O(n)的。
以空间为标准的做法是先将数组排序,当出现临近元素相同时返回true。时间代价是O(lgn)的,空间代价是O(1)。
public class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> s = new HashSet<Integer>();
for( int i=0;i<nums.length;i++ )
{
if(s.contains(nums[i]))
{
return true;
}
s.add(nums[i]);
}
return false;
}
}
本文探讨了在数组中快速判断是否存在重复元素的两种方法:一种是以时间代价为标准,通过使用集合数据结构实现O(n)的时间复杂度;另一种是以空间代价为标准,先对数组进行排序,然后检查相邻元素是否相等,达到O(lgn)的时间复杂度。通过实例代码演示了这两种方法的实现。
769

被折叠的 条评论
为什么被折叠?



