LeetCode 219. 存在重複元素 II(C++、python)
阿新 • • 發佈:2018-12-11
給定一個整數陣列和一個整數 k,判斷陣列中是否存在兩個不同的索引 i 和 j,使得 nums [i] = nums [j],並且 i 和 j 的差的絕對值最大為 k。
示例 1:
輸入: nums = [1,2,3,1], k= 3 輸出: true
示例 2:
輸入: nums = [1,0,1,1], k=1 輸出: true
示例 3:
輸入: nums = [1,2,3,1,2,3], k=2 輸出: false
C++
class Solution { public: bool containsNearbyDuplicate(vector<int>& nums, int k) { int n=nums.size(); map<int,int> dic; for(int i=0;i<n;i++) { if(dic.count(nums[i])==0) { dic.insert(pair<int,int>(nums[i],i)); } else { if(i-dic[nums[i]]<=k) { return true; } else { dic[nums[i]]=i; } } } return false; } };
python
class Solution: def containsNearbyDuplicate(self, nums, k): """ :type nums: List[int] :type k: int :rtype: bool """ dic={} n=len(nums) for i in range(0,n): if nums[i] not in dic: dic[nums[i]]=i else: if i-dic[nums[i]]<=k: return True else: dic[nums[i]]=i return False