Leetcode217:存在重复元素
题目描述
代码实现
解法一:如果存在重复元素,排序后它们相邻。
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;
}
解法二:哈希表
public boolean containsDuplicate2(int[] nums) {
Set<Integer> set=new HashSet<Integer>(nums.length);
for (int x : nums) {
if (set.contains(x)) return true;
set.add(x);
}
return false;
}
Leetcode217:存在重复元素Ⅱ
题目描述
思路分析
- 遍历数组,对于每个元素做以下操作:
- 在散列表中搜索当前元素,如果找到了就返回 true。
- 在散列表中插入当前元素。
- 如果当前散列表的大小超过了 k, 删除散列表中最旧的元素。
- 返回 false。
代码实现
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashSet<Integer> set = new HashSet<Integer>();
for (int i = 0; i < nums.length; i++) {
if (set.contains(nums[i])) {
return true;
}
set.add(nums[i]);
if (set.size() > k) {
set.remove(nums[i - k]);
}
}
return false;
}