zoukankan      html  css  js  c++  java
  • 存在重复---简单

    题目:

      给定一个整数数组,判断是否有重复元素。如果任何值在数组出现至少两次,函数返回true。如果数组中每个元素都不相同,返回false。

    示例:

      输入: [1,2,3,1]

      输出: true

      输入: [1,2,3,4]

      输出: false

    思路:

      很容易想到用O(n^2)的算法,也可以先用nlogn的算法先排序再遍历,有没有突破这个限制的解法呢?暂时想不出来,先用O(n^2)的试试看再看看大佬的吧。

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

      结果惨不忍睹呢,来看看大佬的吧:

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

      看来大佬是用了后一种思路呢,先用标准库的sort快排先排序,再遍历。复杂度为O(nlogn)

  • 相关阅读:
    【Android进阶】关于PagerAdapter的使用方法的总结
    不容易系列之(4)——考新郎
    阿牛的EOF牛肉串
    Number Sequence
    盐水的故事
    Digital Roots
    密码 hdu
    不容易系列之(3)—— LELE的RPG难题
    冒泡排序----java实现
    不容易系列之一
  • 原文地址:https://www.cnblogs.com/manch1n/p/10305142.html
Copyright © 2011-2022 走看看