本文主要是介绍力扣 219.存在重复元素2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你一个整数数组 nums
和一个整数 k
,判断数组中是否存在两个 不同的索引 i
和 j
,满足 nums[i] == nums[j]
且 abs(i - j) <= k
。如果存在,返回 true
;否则,返回 false
。
示例 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
提示:
1 <= nums.length <= 105
-109 <= nums[i] <= 109
0 <= k <= 105
两个循环一整个超时,而且根本没用到哈希表的特性,真的谢了。连了几道了还没有手感。下面是两个循环的菜狗代码。
class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map <int, int> m;int flag = 0;for(int i = 0; i < nums.size(); i++)for(int j = i + 1; j < nums.size(); j++){if(nums[i] == nums[j]) m[j - i]++;flag = 1;}if(flag == 0) return false;for(int t =k; t >= 0; t--){if(m[t]) return true;}return 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()){if(i - m[nums[i]] <= k)return true;elsem[nums[i]] = i;}else{m[nums[i]] = i;}}return false;}
};
这篇关于力扣 219.存在重复元素2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!