「力扣」217. 存在重复元素(第八天)

217. 存在重复元素

题目

题目难度:简单
给定一个整数数组,判断是否存在重复元素。

如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

示例1:

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

示例 2:

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

解题

方法一:快慢指针
我是这样想的,先进行排序,如果存在相同元素的话,那么前一个元素就会和后一个元素相同,这样就把问题转换为第二天的去除相同元素的问题了

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Arrays.sort(nums);
        int fast = 1;
        int slow = 0;
        for(; fast < nums.length ; fast++){
            if(nums[slow++] == nums[fast]){
                return true;
            }
        }
        return false;
    }
}

方法二:哈希
用set集合,最主要的就是:Set集合不允许包含相同的元素,如果试图把两个相同元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。
JAVA中的Set函数

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int n : nums) {
            if (!set.add(n)) {
                return true;
            }
        }
        return false;
    }
}

「力扣」219. 存在重复元素 II (第九天)
「力扣」217. 存在重复元素(第八天)

上一篇:Leetcode Task14 :完成215、217、230题目并打卡


下一篇:217. 存在重复元素