天天看點

哈希表:重複元素

重複元素 1

題目:

給定一個整數數組,判斷是否存在重複元素。

For Example:

輸入: [1,2,3,1]
輸出: true

輸入: [1,2,3,4]
輸出: false

輸入: [1,1,1,3,3,4,3,2,4,2]
輸出: true      

Solution:

class Solution {
    public boolean containsDuplicate(int[] nums){
        Set<Integer> set = new HashSet<Integer>();
        for (int i = 0; i < nums.length; i++) {
            if(set.contains(nums[i])){
               return true;
            }
            set.add(nums[i]);
        }
        return false;
    }
}      

重複元素2

題目:

For Example:

輸入: nums = [1,2,3,1], k = 3
輸出: true

輸入: nums = [1,0,1,1], k = 1
輸出: true

輸入: nums = [1,2,3,1,2,3], k = 2      

Solution:

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int) {
        // 聲明一個哈希表, 大小不超過 k
        HashSet<Integer> set = new HashSet<>();
        // 周遊數組
        for (int i = 0; i < nums.length; i++) {
            if(set.contains(nums[i])){
                return true;
            }
            // 插入元素
            set.add(nums[i]);
            if (set.size() > k) {
                // 移除前面的元素
                set.remove(nums[i-k]);
            }
        }
        return false;
    }
}