Desicription
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:
1 2
Input: nums = [1,2,3,1], k = 3 Output: true
Example 2:
1 2
Input: nums = [1,0,1,1], k = 1 Output: true
Example 3:
1 2
Input: nums = [1,2,3,1,2,3], k = 2 Output: false
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
class {public : bool containsNearbyDuplicate (vector <int >& nums, int k) { unordered_map <int , vector <int >> book; for (int i = 0 ; i < nums.size(); i++) { if (book.find(nums[i]) == book.end()) { book[nums[i]] = vector <int >(); } book[nums[i]].push_back(i); } for (const auto & num : book) { for (int i = 1 ; i < num.second.size(); i++) { if (num.second[i] - num.second[i - 1 ] <= k) { return true ; } } } return false ; } };
近期评论