Contains Duplicate

Share my LeetCode answer


Contains Duplicate

Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

自己的算法:


class Solution {
    public boolean containsDuplicate(int[] nums) {
        if (nums == null || nums.length <  2) {
            return false;
        }
        boolean res = false;
        HashSet hs = new HashSet();
        hs.add(nums[0]);
        for (int i = 1; i < nums.length; i++) {
            if (!hs.contains(nums[i])) {
                hs.add(nums[i]);
            } else  {
                res = true;
            }
        }
        return res;
    }
}
</code></pre>

* 如果res一旦为true,即可返回值。则可优化为如下:


class Solution {
    public boolean containsDuplicate(int[] nums) {
        if (nums == null || nums.length <  2) {
            return false;
        }
        
        boolean res = false;
        int num = 0;
        HashSet hs = new HashSet();
        
        while (!res && num < nums.length) {
            if (!hs.contains(nums[num])) {
                hs.add(nums[num]);
                num += 1;
            } else {
                res = true;
            }
        }
        return res;
    }
}
</code></pre>