(LeetCode 面试经典 150 题) 219. 存在重复元素 II (哈希表)
题目:219. 存在重复元素 II
思路:哈希表,时间复杂度0(n)。
哈希表记录每个数最新的下标,遇到符合要求的返回true即可。
C++版本:
class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int,int> mp;for(int i=0;i<nums.size();i++){if(mp.find(nums[i])!=mp.end()){if(abs(i-mp[nums[i]])<=k) return true;}mp[nums[i]]=i;}return false;}
};
JAVA版本:
class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Map<Integer,Integer> mp =new HashMap<>();for(int i=0;i<nums.length;i++){if(mp.containsKey(nums[i])){if(i-mp.get(nums[i])<=k) return true;}mp.put(nums[i],i);}return false;}
}
GO版本:
func containsNearbyDuplicate(nums []int, k int) bool {mp:=map[int]int{}for i:=0;i<len(nums);i++ {if x,ok:=mp[nums[i]];ok {if i-x<=k {return true}}mp[nums[i]]=i}return false
}