LeetCode 217. Contains Duplicate(检查重复)

本文介绍了一种使用哈希集合解决LeetCode上含有重复元素问题的方法。通过将数组中的每个元素加入到哈希集合中,如果发现某个元素已经存在于集合内,则说明存在重复元素。

原题网址:https://leetcode.com/problems/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.

方法:哈希集合。

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

### LeetCode 217 Contains Duplicate 的解决方案 LeetCode217题旨在检测给定整数数组`nums`中是否存在重复元素。如果任何值在数组中出现了至少两次,则函数返回 `true`; 如果数组中的所有元素都是唯一的,则返回 `false`。 #### 方法一:哈希表 (HashSet) 这种方法利用了集合的数据结构特性来解决这个问题,即集合内的元素是独一无二的。通过遍历输入列表并尝试向集合中添加这些元素,可以有效地判断是否有重复项存在。当遇到已经在集合中存在的元素时立即返回 `True` 表明发现了重复;反之,在完全迭代之后如果没有发现重复则返回 `False`[^2]。 ```cpp bool containsDuplicate(vector<int>& nums) { unordered_set<int> seen; for (auto num : nums){ if(seen.find(num) != seen.end()) return true; seen.insert(num); } return false; } ``` 此方法的时间复杂度为 O(N),其中 N 是数组长度,因为每次插入操作平均情况下只需要常量时间O(1)。空间复杂度同样为 O(N),因为在最坏的情况下可能需要存储所有的N个不同数值到哈希集中去检查它们是否唯一。 #### 方法二:排序法 另一种常见的解法是对原始数据先做一次升序排列再逐一比较相邻位置上的两个数字是否相等。一旦找到一对相同的连续数字就可以提前终止程序并给出肯定的回答——确实含有重复值。否则直到最后都没有匹配的话说明整个序列里没有任何重复成员[^4]。 ```python def contains_duplicate(nums): nums.sort() for i in range(1, len(nums)): if nums[i] == nums[i - 1]: return True return False ``` 该策略虽然简单直观但是由于涉及到排序过程所以整体性能会受到一定影响,其时间复杂度达到了 O(n log n), 而额外的空间消耗取决于所使用的具体排序算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值