219. 存在重复元素

发布时间:2024年01月05日

给你一个整数数组?nums?和一个整数?k?,判断数组中是否存在两个?不同的索引?i?和?j?,满足?nums[i] == nums[j]?且?abs(i - j) <= k?。如果存在,返回?true?;否则,返回?false?。

示例?1:

输入:nums = [1,2,3,1], k = 3
输出:true

示例 2:

输入:nums = [1,0,1,1], k = 1
输出:true

示例 3:

输入:nums = [1,2,3,1,2,3], k = 2
输出:false

提示:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • 0 <= k <= 105

方法1:

        if (nums.length == 1){
            return false;
        }
        boolean flag = false;
        int exist = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = i + 1; j <= Math.min(i + k, nums.length-1); j++) {
                if (nums[i]  == nums[j]){
                    flag = true;
                    exist = 1;
                    break;
                }
            }
            if (exist == 1){
                break;
            }
        }
        return flag;
    }

方法2:

    public boolean containsNearbyDuplicate(int[] nums, int k) {
        Set<Integer> set= new HashSet<>();
        for(int i = 0;i<nums.length;i++){
            if(i>k){
                set.remove(nums[i-k-1]);
            }
            if(!set.add(nums[i])){
                return true;
            }
        }
        return false;
    }

文章来源:https://blog.csdn.net/linping_wong/article/details/135416405
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。