[算法][力扣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;
    }
}
相关推荐
ynchyong几秒前
培养程序化思维
leetcode·程序化思维·刷题经验
荆棘鸟智能1 小时前
河道采砂船识别与轨迹追踪怎么做?检测、跟踪与电子围栏实战思路
人工智能·算法·目标检测
揽星河..1 小时前
【初阶数据结构】常见的排序算法
数据结构·排序算法·1024程序员节
DFT计算杂谈1 小时前
GSAS-II X 射线衍射(XRD)数据转换为对分布函数(PDF,Pair Distribution Function)
算法·机器学习·pdf
绕灵儿2 小时前
火灾检测-应用场景-YOLO训练记录
人工智能·算法
YLCHUP2 小时前
【模拟&STL】题解:AT_abc203_e [ABC203E] White Pawn_基础算法_数据结构_STL模板库_AtcoderABC_C++算法竞赛
数据结构·c++·算法·leetcode·动态规划·哈希算法·近邻算法
啊啊啊啊啊!!!!2 小时前
【c++】⽤哈希表封装myunordered_map和myunordered_set
数据结构·哈希算法·散列表
(●—●)橘子……2 小时前
力扣 第525场周赛 练习理解
数据结构·python·学习·算法·leetcode
Tt有了t2 小时前
Redis的数据结构
数据结构·数据库·redis
Rain的Java大神之路2 小时前
LeetCode 21 合并两个有序链表:一道 Easy 题,凭什么刷掉一半候选人?
java·后端·算法