zoukankan      html  css  js  c++  java
  • [LeetCode]10. 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.

    解法1:暴力破解,时间复杂度O(n^2)。从头至尾扫描数组,将当前值与数组其他值一一进行比较,若有相同,则返回true;否则直到数组末尾仍没找到重复值,则返回false。

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

    解法2:先将数组按升序排序,然后比较相邻的两个元素是否有相等的即可。因为一般交换排序最快可以达到O(nlogn),最后扫描一趟耗时O(n),因此时间复杂度为O(nlogn)。

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

    解法3:由解法2引申想到空间换时间的方法,桶排序或者计数排序等都可以使得时间复杂度降到O(n),因此整个算法时间复杂度为O(n)。但是此法有个缺点:输入数组的元素范围需在一定范围内,并且已知这个范围。一个好的方法即是使用STL的map,也可以自己实现Hash表和相应算法。

    class Solution {
    public:
        bool containsDuplicate(vector<int>& nums) {
            int n = nums.size();
            map<int, int> mii;
            for(int i = 0; i < n; i++)
            {
                int cnt = ++mii[nums[i]];
                if(cnt > 1)
                    return true;
            }
            
            return false;
        }
    };
  • 相关阅读:
    BeautifulSoup 安装使用
    用Mediawiki做百科网站资源大参考
    ubutun 下webalizer 分析Apache日志
    网站流量统计系统 phpMyVisites
    mysql的root密码忘记解决方
    mrtg监控网络流量简单配置
    CentOS 6.4下Squid代理服务器的安装与配置,反向代理
    linux 查看文件系统类型
    JAVA多媒体编程入门(图像部分)
    log4net使用具体解释
  • 原文地址:https://www.cnblogs.com/aprilcheny/p/4855144.html
Copyright © 2011-2022 走看看