Given an array of integers and an integer
k
, find out whether there are two distinct indices
i
and
j
in the array such that
nums[i] = nums[j]
and the
absolute
difference between
i
and
j
is at most
k
.
思想:
用set容器来做 主要set的一个特点是
唯一性 插入的值不会有重复
利用这点 使用find()函数查找当前set容器类是否有该值 来进行判断
AC代码:时间o(n) 空间o(n)
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
set<int> s;
int len = nums.size();
for(int i=0;i<len;i++){
if(i>k&&!s.empty()) s.erase(nums[i-k-1]);
if(s.find(nums[i])==s.end())
s.insert(nums[i]);
else
return true;
}
return false;
}
};

本文介绍了一种使用C++ set容器高效解决数组中是否存在两个不同索引但值相同的元素问题的方法,通过确保索引间的绝对差异不超过给定值k,实现O(n)的时间复杂度。
670

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



