217. 存在重复元素
题目
题目难度:简单
给定一个整数数组,判断是否存在重复元素。
如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
示例1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
解题
方法一:快慢指针
我是这样想的,先进行排序,如果存在相同元素的话,那么前一个元素就会和后一个元素相同,这样就把问题转换为第二天的去除相同元素的问题了
class Solution {
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
int fast = 1;
int slow = 0;
for(; fast < nums.length ; fast++){
if(nums[slow++] == nums[fast]){
return true;
}
}
return false;
}
}
方法二:哈希
用set集合,最主要的就是:Set集合不允许包含相同的元素,如果试图把两个相同元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。
JAVA中的Set函数
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int n : nums) {
if (!set.add(n)) {
return true;
}
}
return false;
}
}