标签:nums int Solution len 219 II mp st LeetCode
219. 存在重复元素 II
Solution
思路1:
重复元素 然后就用HashMap不断更新最新出现的位置 与k值判断即可。
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Map<Integer, Integer> mp = new HashMap<>();
int len = nums.length;
for (int i = 0; i < len; i++) {
if (mp.containsKey(nums[i])) {
int idx = mp.get(nums[i]);
if (Math.abs(i - idx) <= k) {
return true;
} else {
mp.put(nums[i], i);
}
} else {
mp.put(nums[i], i);
}
}
return false;
}
}
思路2:
涉及下标和区间大小的就往滑动窗口想一想!不够k个就一直塞,够k个就判断一下重复不(可以用Set判断),然后删一个,继续。
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Set<Integer> st = new HashSet<>();
int len = nums.length;
for (int i = 0; i < len; i++) {
if (i > k) {
st.remove(nums[i - k - 1]);
}
if (!st.add(nums[i])) {
return true;
}
}
return false;
}
}
标签:nums,int,Solution,len,219,II,mp,st,LeetCode 来源: https://www.cnblogs.com/ACMerszl/p/15823090.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。