[算法][力扣219]存在重复元素2

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,

满足 numsi == numsj 且 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

解法一:双重for循环

解法二:使用Map,记录每个元素的值和位置

java 复制代码
public class Test04_001 {

    public static void main(String[] args) {
        Test04_001 test04 = new Test04_001();
        boolean ret = test04.containsNearbyDuplicate(new int[]{1, 0, 1, 1}, 1);
        System.out.println(ret);
    }

    public boolean containsNearbyDuplicate(int[] nums, int k) {
        HashMap<Integer, Integer> map = new HashMap<>(); // <num, index>
        for (int i = 0; i < nums.length; i++) {
            int num = nums[i];
            if (map.containsKey(num) && i - map.get(num) <= k) {
                return true;
            } else {
                map.put(num, i);
            }
        }
        return false;
    }
}
相关推荐
饼干哥哥7 小时前
Reddit VOC调研太慢?搭一个AI专家团队半小时洞察任何品类|以猫用饮水机为例
人工智能·算法·ai编程
地平线开发者8 小时前
Transformer模型部署之性能优化指南
算法
地平线开发者8 小时前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶
半个落月11 小时前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
小月土星12 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试
小月土星12 小时前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试
To_OC1 天前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode
鱼鱼不愚与1 天前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法
复杂网络2 天前
论最小 Agent 计算机的形态
算法