leetcode:存在重复元素

Leetcode(初级算法):存在重复元素

题目

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

在这里插入图片描述

思路

思路一

最初的思路是每个元素都进行比较,即进行两次for循环,如果两个数相减为0,表示有重复的元素,直接返回true,退出所有循环 。但是这个思路真的有点low,第一次提交只击败了7%的人,可见还需改进算法。

代码

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

思路二

先进行排序,再比较前后两个元素是否相等,来判断是否有重复元素。这种思路比上一个思路快很多,并且运行之后击败了94%的人

代码

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

思路一和思路二的时间对比
在这里插入图片描述

其他

在统计图上还看到只用了12ms的大佬,附上他的代码
感觉他的思路是在我所说的思路二上加了最下面那段。。。
不得不说下面那段真的好神奇!
有人做了说明,可以看看:https://blog.csdn.net/qq_32320399/article/details/81518476
在这里插入图片描述

发布了4 篇原创文章 · 获赞 1 · 访问量 203

猜你喜欢

转载自blog.csdn.net/weixin_43870424/article/details/87006745
今日推荐