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.
Example 1:
Input: nums = 3
Output: true
Example 2:
Input: nums = 1
Output: true
Example 3:
Input: nums = 2
Output: false
这道题是之前那道 评论区十二楼 所示,但是由于后来题目要求变了,那么就没啥歧义了,正确解法如下:
class Solution { public: bool containsNearbyDuplicate(vector<int>& nums, int k) { unordered_map<int, int> m; for (int i = 0; i < nums.size(); ++i) { if (m.find(nums[i]) != m.end() && i - m[nums[i]] <= k) return true; else m[nums[i]] = i; } return false; } };
Github 同步地址:
https://github.com/grandyang/leetcode/issues/219
类似题目:
参考资料:
https://leetcode.com/problems/contains-duplicate-ii/
https://leetcode.com/problems/contains-duplicate-ii/discuss/61372/Simple-Java-solution
LeetCode All in One 题目讲解汇总(持续更新中...)