LeetCode——217. 存在重复元素(Java)

题目描述

题干:
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

示例1:
输入: [1,2,3,1]
输出: true

示例2:
输入: [1,2,3,4]
输出: false

示例3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

题解思路

存在重复返回true,这道题和 169.多数元素 那道题有些相像,这里一看到重复就可以想到哈希表的方法

除了哈希表,因为只要有一个重复即可,所以我们可以先排序,然后从头开始前后比较也可以优化过程

正确代码

import java.util.Arrays;
import java.util.HashSet;

public class MyContainsDuplicate {
    //排序后前后比较
    public boolean containsDuplicate1(int[] nums) {
        Arrays.sort(nums);
        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] == nums[i + 1]){
                return true;
            }
        }
        return false;
    }

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

总结

本身不难,看完就写,思路代码都是对的,现在HashSet用的也还可以了,抽时间得了解一下底层原理了,当然还有HashMap

如果文章本身存在问题或者存在更好的题解,欢迎在评论区斧正和评论,各自努力,你我最高处见
posted @ 2021-03-25 12:29  21岁还不是架构师  阅读(32)  评论(0编辑  收藏  举报