力扣219:存在重复元素Ⅱ
力扣219:存在重复元素Ⅱ
- 题目
- 思路
- 代码
题目
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。
思路
首先想到的一定是用哈希表,我们只要将哈希表的key值设为索引所代表的值,value设为索引。然后在循环中判断是否存在相同的key值以及这个key值的value值减去当前的索引的绝对值是否小于k即可。
代码
class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int,int> um;for(int i = 0;i < nums.size();i++){//判断是否有相同的key值以及对应的value值减去i的绝对值是否小于kif(um.count(nums[i]) && abs(um[nums[i]] - i) <= k){return true;}//key为索引所代表的值,value为索引um[nums[i]] = i;}return false;}
};```