mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-08-06 01:20:05 +08:00
1.6 KiB
1.6 KiB
题目地址
https://leetcode-cn.com/problems/contains-duplicate-ii/
思路
使用哈希策略,map数据结构来记录数组元素和对应的元素所在下表,看代码,已经详细注释。
C++代码
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int, int> map; // key: 数组元素, value:元素所在下表
for (int i = 0; i < nums.size(); i++) {
// 找到了在索引i之前就出现过nums[i]这个元素
if (map.find(nums[i]) != map.end()) {
int distance = i - map[nums[i]];
if (distance <= k) {
return true;
}
map[nums[i]] = i; // 更新元素nums[i]所在的最新位置i
} else { // 如果map里面没有,就把插入一条数据<元素,元素所在的下表>
map[nums[i]] = i;
}
}
return false;
}
};
代码精简之后
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int, int> map;
for (int i = 0; i < nums.size(); i++) {
if (map.find(nums[i]) != map.end() && i - map[nums[i]] <= k) return true;
map[nums[i]] = i;
}
return false;
}
};
更过算法干货文章持续更新,可以微信搜索「代码随想录」第一时间围观,关注后,回复「Java」「C++」 「python」「简历模板」「数据结构与算法」等等,就可以获得我多年整理的学习资料。