每日一道算法题 - 存在重复元素

2021-12-11  本文已影响0人  辉_ace

问题

给定一个数组,判断是否存在重复元素。 如果存在,则返回true。不存在,则返回false。

思路

利用set自动去重。在向set添加元素的时候,会返回是否添加成功。利用该特性,遍历数组,逐一向set中添加,如果全部添加成功,则最终结果返回false。一旦某个元素添加set失败,则中止循环,最终结果返回true。

也可以先对原数组排序,接着比较是否存在相同元素。 另外也可以利用set自动去重功能直接添加元素,最后比较原数组和set大小。 但是这两种方式都没有第一种效率高。

实现

public class ContainsDuplicate {

    public static void main(String[] args) {

        int[] nums = new int[]{1,1,1,3,3,4,3,2,4,2};
        System.out.println(containsDuplicate(nums));
    }

    private static boolean containsDuplicate(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int num : nums) {
            if (!set.add(num)){
                return true;
            }
        }
        return false;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读