LeetCode算法解题集:Contains Duplicate
2021-11-24 本文已影响0人
海阔天空的博客
题目:
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.
https://leetcode.com/problems/contains-duplicate/
思路:
思路一:两层循环,第一次循环里取一个数,在第二次循环里去其比较后面的数字是之否相等。算法复杂度双层递减循环,结果超时。
思路二:一层循环,使用map保存该数组,保存之前先判断是否存在,存在则返回true,不存在则记录。算法复杂度仍然比较高
思路三:看到讨论帖子里的思路,先排序,然后挨个比较前后的顺序,相等则返回true,不相等继续只结尾返回false。代码如下
代码:
{
public:
bool containsDuplicate(vector<int>& nums)
{
sort(nums.begin(), nums.end());
for (size_t i = 1; i < nums.size(); i++)
{
if (nums[i - 1] == nums[i])
{
return true;
}
}
return false;
}
}
总结:
1、简化思路,使用现有的api接口
2、尽量不要使用双重循环来解决问题。