zoukankan      html  css  js  c++  java
  • Leetcode 217. 存在重复元素 哈希 排序

    地址 https://leetcode-cn.com/problems/contains-duplicate/

    给定一个整数数组,判断是否存在重复元素。
    如果存在一值在数组中出现至少两次,函数返回 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
    

    解答
    进行数组的处理 有两种解法
    1 排序 然后逐个检查相邻的数字是否相等 如果相等就是有重复元素
    排序时间是花费最长的 时间复杂度 O(NlogN)

    class Solution {
    public:
        bool containsDuplicate(vector<int>& nums) {
            sort(nums.begin(),nums.end());
            for(int i = 0;i <nums.size()-1;i++){
                if(nums[i]==nums[i+1]) return true;
            }
    
            return false;
        }
    };
    

    2 哈希 记录每个遍历到的数字 查哈希表判断是否与之前记录的数字相等 如果有 则说明有重复元素
    时间复杂度是O(N)

    class Solution {
    public:
        unordered_set<int> ss;
        bool containsDuplicate(vector<int>& nums) {
            for(auto&e : nums){
                if(ss.count(e) != 0){
                    return true;
                }
                ss.insert(e);
            }
    
            return false;
        }
    };
    
  • 相关阅读:
    C++中的模板编程
    C++中的抽象类
    C++中的多态
    C++中的继承
    操作符重载(二)
    操作符重载(一)
    C++中的类与对象模型
    [八省联考2018] 劈配 (网络流+二分)
    CF51F Caterpillar (边双+树形DP)
    CF36E Two Paths (欧拉回路+构造)
  • 原文地址:https://www.cnblogs.com/itdef/p/15521130.html
Copyright © 2011-2022 走看看