Paste_Image.png
My code:
import java.util.HashMap;
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
if (nums == null || nums.length == 0)
return false;
HashMap<Integer, Integer> h = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
if (!h.containsKey(nums[i]))
h.put(nums[i], i);
else {
int idBefore = h.get(nums[i]);
if (i - idBefore <= k)
return true;
else {
h.put(nums[i], i);
}
}
}
return false;
}
}
My test result:
Paste_Image.png
這次作業(yè)也不是很難霉祸,主要意思理解的不太對脐湾。
他的意思是乳乌,能不能找到兩個相等的數(shù)捧韵,他們的index只差最大不能超過k,即汉操,不一定要等于k再来。然后就順理成章了。
**
總結(jié): Array
**
Anyway, Good luck, Richardo!
My code:
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
if (nums == null || nums.length < 2)
return false;
HashMap<Integer, Integer> tracker = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
if (tracker.containsKey(nums[i])) {
int index = tracker.get(nums[i]);
if (Math.abs(index - i) <= k)
return true;
tracker.put(nums[i], i);
}
else
tracker.put(nums[i], i);
}
return false;
}
}
我覺得還是利用了 Two Sum 的思想磷瘤。
就是把我所需要的那個值(相等)塞入HashMap中芒篷。
key : needed value --> value: index of this value
然后,
后面如果當前訪問值不在HashMap中采缚,就繼續(xù)更新該HashMap
如果在针炉,那么取出index,比較下是不是在K以內(nèi)扳抽。
如果在糊识,return true at once.
如果不在, 更新HashMap, 同樣的value對應了當前的index摔蓝。這樣,后續(xù)如果還有相同value的index愉耙,如果和該最新版的index距離超過K,就一定與之前的超過K贮尉。
就是這么個思路。
2Sum 的思想還是很普遍的朴沿。
Anyway, Good luck, Richardo!