題目
解題思路
這道題如果用嵌套循環會超時,所以我用了map。
思路簡單,有2個點需要注意:
當nums爲空或k爲0的時候一定是false
k有可能大於nums數組長度
具體代碼
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
if (nums.empty() || !k)
return false;
k = k < nums.size() - 1 ? k : nums.size() - 1;
map<int, int> tmp;
for (int i = 0; i < nums.size(); i++) {
if (tmp.find(nums[i]) != tmp.end() && i - tmp[nums[i]] <= k) {
return true;
}
else {
tmp[nums[i]] = i;
}
}
return false;
}
};