給定一個整數數組和一個整數 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
面試就掛在了這道題上。心痛啊。。。想到了優先隊列,沒想到用map啊。
用map來記錄數值的索引,抽到相同元素來判斷索引差值是否小於等於k。
class Solution{ public: bool containsNearbyDuplicate(vector<int>& nums, int k) { map<int,int>mp; if(k<0) return false; for(int i=0;i<nums.size();i++) { if(mp.count(nums[i])) { if(k>=i-mp[nums[i]]) return true; } mp[nums[i]]=i; } return false; } };
Leetcode 88. 219. 存在重複元素 II 思維 map
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.