leetcode - [217] Contains Duplicate

2020/02/15

题目描述

Given an array of integers, find if the array contains any duplicates.

判断一个数组中是否有重复的元素。

举个例子:

Example 1
Input: [1,2,3,1]
Output: true

Example 2
Input: [1,2,3,4]
Output: false

解法1

我的想法是这样的:

首先,创建一个Map,然后遍历数组,一旦发现其中有重复的元素,直接返回true,否则返回false

public static boolean p217(int[] nums) {
    HashMap<Integer, Integer> map = new HashMap<>(10);
    for (int num: nums){
        if (map.containsKey(num)){
            return true;
        } else {
            map.put(num, 1);
        }
    }
    return false;
}

解法2

老规矩,翻了下评论区,看到另一种解法:使用Set

public static boolean p217UsingSet(int[] nums) {
    HashSet<Integer> set = new HashSet<>();
    for (int num: nums){
        if (set.contains(num)){
            return true;
        } else {
            set.add(num);
        }
    }
    return false;
}

再优化下,充分利用add(E e)方法返回的boolean

public static boolean p217UsingSet(int[] nums) {
    HashSet<Integer> set = new HashSet<>();
    for (int num: nums){
        if (!set.add(num)){
            return true;
        }
    }
    return false;
}

Reference


一位喜欢提问、尝试的程序员

(转载本站文章请注明作者和出处 姚屹晨-yaoyichen

Post Directory