欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)

相关标签: Leetcode学习