Leetcode - Contains Duplicate II

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。然后就順理成章了。

**
總結: 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以內。
如果在,return true at once.
如果不在, 更新HashMap, 同樣的value對應了當前的index。這樣,后續(xù)如果還有相同value的index,如果和該最新版的index距離超過K,就一定與之前的超過K。
就是這么個思路。
2Sum 的思想還是很普遍的。

Anyway, Good luck, Richardo!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容