219. 存在重复元素 II。2星

方法一:

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)

发布了18 篇原创文章 · 获赞 0 · 访问量 323

猜你喜欢

转载自blog.csdn.net/qq_44787671/article/details/105234140