【剑斩OFFER】算法的暴力美学——存在重复元素Ⅱ

一、题目描述

二、算法原理

思路:哈希表

使用 unordered_map<int,int> 来存储值和对应的下标,这道题目跟之前那道存储重复元素差不多,我们先遍历数组,在把数组里面的元素放到哈希表之前,我们先判断这个元素是否存在于哈希表中,如果存在,我们就要判断这个值的下标和当前值的下标相减是否 <= k ,如果符合这个条件,返回 true,不符合就把这个元素入哈希表中,那么这个有个问题,就是如果当前元素在之前遍历数组的时候已经入哈希了,都是不符合题目下标相减大于k,那么我们也是要把当前值入哈希的,而且入哈希之后,之前那个值就会被覆盖了,覆盖了也没事,因为我们要找的是相减 <= k 的,。

三、代码实现

cpp 复制代码
class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        unordered_map<int,int> hash;
        for(int i = 0; i < nums.size(); i++)
        {
            if(hash.count(nums[i]) && (i - hash[nums[i]]) <= k) return true;
            hash[nums[i]] = i;
        }
        return false;
    }
};
相关推荐
浅念-2 小时前
刷穿LeetCode:BFS 解决 Flood Fill 算法
数据结构·c++·算法·leetcode·职场和发展·bfs·宽度优先
做cv的小昊2 小时前
【TJU】研究生应用统计学课程笔记(8)——第四章 线性模型(4.1 一元线性回归分析)
笔记·线性代数·算法·数学建模·回归·线性回归·概率论
贾斯汀玛尔斯3 小时前
每天学一个算法--倒排索引(Inverted Index)
算法·inverted-index
小e说说3 小时前
打破偏科困境:这些学习软件助孩子重燃学习热情
算法
月昤昽4 小时前
autoCAD二次开发 4.正多边形与collection区分
算法·c#·二次开发·autocad二次开发
休息一下接着来4 小时前
C++ 固定容量环形队列实现
c++·算法
im_AMBER4 小时前
手撕hot100之矩阵!看完这篇就AC~
javascript·数据结构·线性代数·算法·leetcode·矩阵
笨笨饿4 小时前
#79_NOP()嵌入式C语言中内联汇编宏的抽象封装模式研究
linux·c语言·网络·驱动开发·算法·硬件工程·个人开发
风萧萧19995 小时前
问答样例如何在RAG问答中使用?
算法