题目:
今天这题确实很好想,大体上就两个思路。要么排序判断相邻元素,要么就哈希表
1.排序判断相邻元素C++代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
for(int i=0;i<nums.size();i++)
{
for(int j=0;j<nums.size()-1-i;j++)
{
if(nums[j]<nums[j+1])
{
swap(nums[j],nums[j+1]);
}
else if(nums[j]==nums[j+1])
{
return true;
}
}
}
return false;
}
};
int main()
{
vector<int> nums = {2,14,18,22,22};
Solution s;
cout<<s.containsDuplicate(nums);
}
2.哈希表C++代码
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> s;
for (int x: nums) {
if (s.find(x) != s.end()) {
return true;
//a.find("eeee"):查找元素"eeee",返回结果为a.end()则表明没有找到,否则返回所对应元素
}
s.insert(x);
}
return false;
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/contains-duplicate/solution/cun-zai-zhong-fu-yuan-su-by-leetcode-sol-iedd/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
多提一句,我想起来上次不知道什么题,用的冒泡排序法优化了sort的时间复杂度,边排序边找,这样也有一定的效率。结果,这次用它测试用例直接给了我个数据大小巨大的直接超时。。。人晕了。