方法一:排序
/*
* @lc app=leetcode.cn id=217 lang=cpp
*
* [217] 存在重复元素
*/
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
// @lc code=start
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end()); // 排序
for (int i=1; i<nums.size(); i++){
if (nums[i]==nums[i-1]){
// 有相同
return true;
}
}
return false;
}
};
// @lc code=end
int main(){
Solution s;
vector<int> nums = {1,2,3,1};
s.containsDuplicate(nums);
return 0;
}
方法二:哈希表
/*
* @lc app=leetcode.cn id=217 lang=cpp
*
* [217] 存在重复元素
*/
#include<vector>
#include<iostream>
#include<unordered_set>
using namespace std;
// @lc code=start
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> aset;
for (int num:nums){
if (aset.find(num)!=aset.end()){
// 已经在哈希表中
return true;
}
aset.insert(num); // 以num作为键
}
return false;
}
};
// @lc code=end