方法一:用哈希表
class Solution {
public boolean containsDuplicate(int[] nums) {
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0;i<nums.length;i++)
{
if(map.containsKey(nums[i])) return true;
else map.put(nums[i],i);
}
return false;
}
}
方法二:排序
本方法使用排序算法。由于比较排序算法,如堆排序,可以在最坏情况下具有 O(n \log n)O(nlogn) 的时间复杂度。因此,排序经常是很好的预处理方法。排序之后,我们可以扫描已排序的数组,以查找是否有任何连续的重复元素。
数组排序,Arrays.sort(nums);
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);//排序
for (int i = 0; i < nums.length - 1; ++i) {
if (nums[i] == nums[i + 1]) return true;
}
return false;
}