输入:
-
一个整数数组
nums -
一个整数
k
要求:
判断数组中是否存在两个不同下标 i、j,满足:
-
nums[i] == nums[j] -
|i - j| <= k
输出:
满足 → 返回 true
不满足 → 返回 false
思路:和“存在重复元素”类似,但这题不止要判断是否重复,还需要判断重复的两个下标之间的距离是否 ≤ k。
因此,用哈希表记录某个数字 上一次出现的位置。
复杂度:
时间复杂度:O(n)
空间复杂度:O(n)
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int, int> mp;
for (int i = 0; i < nums.size(); i++) {
int x = nums[i];
if (mp.count(x) && i - mp[x] <= k) {
return true;
}
mp[x] = i;
}
return false;
}
};
837

被折叠的 条评论
为什么被折叠?



