问题:给出一组数组,若任意一个数存在重复值,则返回true,若每个元素各不相同,则返回false
思路1:最简单,嵌套遍历所有元素,但超时。
思路2:排序
class Solution {
/**
* 判断数组是否有重复元素
* @params nums 待判断的数组
* @return true/false
*/
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;
}
}
思路3:哈希表
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<Integer>();
for (int x : nums) {
if (!set.add(x)) {
return true;
}
}
return false;
}
}