存在重复元素

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.

Example 1:

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

Example 2:

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

Example 3:

Input: [1,1,1,3,3,4,3,2,4,2]
Output: true
题意:判断数组中是否有重复元素,如果有,返回true,没有的话,返回false
思路:用到哈希集合,遍历数组,如果哈希集合里已经有了这个数,则返回true,不然将数插入集合中,直到最后返回false。
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_set<int> hashset;
        for (int num : nums) {  //不太会用这种遍历数组的方法,,
            if (hashset.count(num) > 0) {
            return true;
        }
        hashset.insert(num);
    }
    return false;
    }
};

 

转载于:https://www.cnblogs.com/Bipolard/p/9994154.html

<think> 题目要求:Fix0和Fix1是Fix的子集,且没有交集,求FixOther(即Fix中不属于Fix0或Fix1的元素)。现在已知不存在重复元素。 因此,我们可以利用集合操作,因为元素唯一,所以可以直接使用集合差集,但要注意保留顺序。 因为Fix中元素不重复,所以我们可以先将Fix0和Fix1合并为一个集合(要移除的元素集合),然后遍历Fix列表,将不在这个集合中的元素保留即可。 步骤: 1. 创建要移除的元素集合:remove_set = set(Fix0 + Fix1) 2. 遍历Fix列表,将不在remove_set中的元素添加到结果列表。 代码实现: ```python def find_fix_other(Fix, Fix0, Fix1): remove_set = set(Fix0) | set(Fix1) # 合并两个集合 return [x for x in Fix if x not in remove_set] # 示例 Fix = [1, 2, 3, 4, 5] Fix0 = [1, 2] Fix1 = [3] print(find_fix_other(Fix, Fix0, Fix1)) # 输出 [4,5] ``` 复杂度:O(n),其中n为Fix列表的长度,因为集合查找是O(1),遍历是O(n)。 注意:由于题目保证没有重复元素,且Fix0和Fix1是Fix的子集,所以这样实现是正确的。 §§相关问题§§ 1. 如果Fix中存在重复元素,上述代码会有什么问题? 2. 如何验证输入确实满足无重复元素的条件? 3. 如果Fix0和Fix1不是Fix的子集,上述代码是否仍然正确? 4. 是否可以进一步优化代码以减少内存占用? </think> 当确认输入列表**不存在重复元素**时,可以直接使用集合操作实现更简洁高效的解法(时间复杂度 O(n),空间复杂度 O(m),其中 n = len(Fix),m = len(Fix0)+len(Fix1)): ```python def find_fix_other(Fix, Fix0, Fix1): """高效实现(要求所有列表中无重复元素)""" # 创建要移除元素的集合 remove_set = set(Fix0) | set(Fix1) # 直接过滤不属于移除集合的元素 return [x for x in Fix if x not in remove_set] # 示例验证 Fix = [1, 2, 3, 4, 5] Fix0 = [1, 2] Fix1 = [3] print(find_fix_other(Fix, Fix0, Fix1)) # 输出 [4, 5] ``` **实现优势**: 1. **时间复杂度**:O(n) 线性扫描(集合查找 O(1)) 2. **代码简洁**:仅需 2 行核心逻辑 3. **内存优化**:只需存储 Fix0 和 Fix1 的集合 **注意事项**: - 仅当输入满足以下条件时适用: - `Fix` 中不存在重复元素 - `Fix0` 和 `Fix1` 不存在重复元素 - 元素必须是可哈希类型(数字、字符串、元组等)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值