219. 存在重复元素 II。2星
程序员文章站
2024-02-29 08:24:34
...
方法一:
public class chongfuyuansu {
public boolean containsNearbyDuplicate(int[] nums, int k) {
if(k<=0){return false;}
for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<=i+k && j<nums.length;j++){
if(nums[i]==nums[j]){return true;}
}
}
return false;
}
}
效率较低,利用双重for循环来遍历,在内层循环略作优化,使内层遍历的元素距离外层元素距离小于等于K。
方法二:
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashSet<Integer> set = new HashSet<>();
for(int i = 0; i < nums.length; i++) {
if(set.contains(nums[i])) {
//contains(Object o) 方法用于返回“true”,如果此set包含指定的元素。
return true;
}
set.add(nums[i]);
if(set.size() > k) {
set.remove(nums[i - k]);
//remove(Object o)方法用于从该组中移除指定元素(如果存在)。
//使set内的数据数量保持在小于等于K个。
}
}
return false;
}
}
作者:guanpengchn
链接:https://leetcode-cn.com/problems/contains-duplicate-ii/solution/hua-jie-suan-fa-219-cun-zai-zhong-fu-yuan-su-ii-by/
来源:力扣(LeetCode)