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;
        }
    };
    
  • 相关阅读:
    google搜索教程
    phoenix/stack-five
    phoenix/stack-four
    phoenix/stack-three
    phoenix/stack-one
    fork 在 Linux 内核里面的实现
    无文件执行 ELF
    glibc 堆内存管理杂记
    QOS shaping 知识要点
    QOS CQ
  • 原文地址:https://www.cnblogs.com/itdef/p/15521130.html
Copyright © 2011-2022 走看看