快乐水题219. 存在重复元素 II
Posted 谁吃薄荷糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快乐水题219. 存在重复元素 II相关的知识,希望对你有一定的参考价值。
原题:
题目简述:
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。
解题思路
1.利用哈希来统计相同的值,然后计算下标差;
2.符合条件则输出true,否则最后输出false;
3.over;
夹带私货
1.利用最爱的模拟大法,模拟大法可以失败,但是不能缺席!
2.美滋滋,可惜超时了;
3.over;
C++代码:
class Solution
public:
bool containsNearbyDuplicate(vector<int>& nums, int k)
//模拟大法可惜超时了。。。。
/*
int n = nums.size();
for(int i = 0; i < n - 1;i++)
for(int j = i +1;j < n; j++)
if(nums[i] == nums[j] && abs(i - j) <=k)
return true;
return false;
*/
//哈希表法
int n = nums.size();
unordered_map<int, int> umap;
for(int i = 0; i < n ; i++)
if(umap.count(nums[i]) && abs(i - umap[nums[i]]) <= k)
return true;
umap[nums[i]] = i;
return false;
;
力扣结果展示:
以上是关于快乐水题219. 存在重复元素 II的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 219: 存在重复元素 IIContains Duplicate II