LeetCode Contains Duplicate II
2015-07-20 10:54
489 查看
原题链接在这里:https://leetcode.com/problems/contains-duplicate-ii/
Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i]
= nums[j] and
the difference between iand j is at most k.
Hide Tags
Array Hash
Table
Hide Similar Problems
(E) Contains Duplicate (M)
Contains Duplicate III
这道题用HashMap 来做,基本思路是检查corner case 先,然后建立一个HashMap hm, Iterate array nums from the beginning.
对于nums[i],检查它时候在 hm 中,若不在,就加<nums[i], i>进去,key是nums[i], value 是 i.
若是nums[i] 在 hm 中,就要看当前的i 和 hm中对应nums[i]的 value 的差值是否比k大:
若是比k 大,说明不符合条件,去掉旧的pair,添加当前pair;
若是不比k大,则return true.
这里熟练几个 HashMap functions: hm.put(key, value); hm.get(key); hm,remove(key): hm.containsKey(key).
AC code:
Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i]
= nums[j] and
the difference between iand j is at most k.
Hide Tags
Array Hash
Table
Hide Similar Problems
(E) Contains Duplicate (M)
Contains Duplicate III
这道题用HashMap 来做,基本思路是检查corner case 先,然后建立一个HashMap hm, Iterate array nums from the beginning.
对于nums[i],检查它时候在 hm 中,若不在,就加<nums[i], i>进去,key是nums[i], value 是 i.
若是nums[i] 在 hm 中,就要看当前的i 和 hm中对应nums[i]的 value 的差值是否比k大:
若是比k 大,说明不符合条件,去掉旧的pair,添加当前pair;
若是不比k大,则return true.
这里熟练几个 HashMap functions: hm.put(key, value); hm.get(key); hm,remove(key): hm.containsKey(key).
AC code:
public class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { if(k<1 || nums == null || nums.length<2) return false; HashMap<Integer, Integer> hm = new HashMap<>(); int i = 0; while(i<nums.length){ if(!hm.containsKey(nums[i])){ hm.put(nums[i], i); }else if((i-hm.get(nums[i])) > k ){ hm.remove(nums[i]); hm.put(nums[i], i); }else{ return true; } i++; } return false; } }
相关文章推荐
- LeetCode Contains Duplicate II
- HDU3420 Bus Fair
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法
- 12 Using_explain_plan
- LeeCode-Contains Duplicate
- JetBrain WebStorm 注册码
- [Machine Learning & Algorithm] 朴素贝叶斯算法(Naive Bayes)
- HDU 4738 Caocao's Bridges taijan (求割边,神坑)
- HDOJ 1021 Fibonacci Again
- DataInputStream和DataOutputStream用法细节探讨
- copy strong assign weak retain 的用法
- copy strong assign weak retain 的用法
- Factorial Trailing Zeroes
- Climbing Stairs
- POJ 3714 Raid(平面最近点对)
- UVA 10245 The Closest Pair Problem(平面最近点对)
- HDU:3420 Bus Fair, 3090 Go Home+uva:11729 Commando War(简单贪心)
- AC自动机 - 关于Fail指针
- dh_auto_test failed
- HDUOJ 1021 Fibonacci Again