Leetcode219 存在重複元素II
阿新 • • 發佈:2018-12-15
題目 給定一個整數陣列和一個整數 k,判斷陣列中是否存在兩個不同的索引 i 和 j,使得 nums [i] = nums [j],並且 i 和 j 的差的絕對值最大為 k。 方法: 對於這個題目,感覺自己蠢到爆了,因為要找數字 A 的 k 範圍內相等的數字,所以剛開始一直想的事A左邊k個,右邊k個,在兩個k範圍內找。 然而可以對於每個nums[i] 都去看左邊的k範圍內是否存在相等的數即可。所有左右找的題,都可以化為找左邊。然後從頭開始遍歷。
public boolean containsNearbyDuplicate(int[] nums, int k) { HashMap<Integer, Integer> hashMap = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (hashMap.containsKey(nums[i])) { int location = hashMap.get(nums[i]); if (i - location <= k) { return true; } } hashMap.put(nums[i], i); } return false; }