Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
给定一个数组,判断数组有无重复。
很简单,若使用hash表,可以做到O(N),代价是额外的线性空间消耗。
若不使用额外空间,通过预排序再线性扫描可以做到。效率是O(NLOGN)+O(N)
下面给了一个用hash的算法。注意add方法在没有重复是才会返回true,所以不用使用contains就可以判断是否含有重复,可以优化性能。
class Solution {
public boolean containsDuplicate(int[] nums) {
if(nums==null||nums.length==0) return false;
HashSet<Integer> set = new HashSet<>();
for(int i = 0 ;i<nums.length;i++)
{
if(!set.add(nums[i]))
return true;
}
return false;
}
}