剑指offer 第一题
去力扣里测试算法
思路一:
排序后,前一个与后一个相比是否相同。
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
sort(nums.begin(), nums.end());
int n = 0;
int len = nums.size();
vector<int> ans;
for (int i = 0; i < len; i++)
{
if (nums[i] == n){
ans.push_back(nums[i]);
}
n = nums[i];
}
return ans;
}
};
若本地运行:
#include <iostream>
#include<algorithm>
#include <vector>
using namespace std;
int main()
{
vector <int> nums{ 4, 3, 2, 7, 8, 2, 3, 1 };
for (auto i : nums) {
cout << i << "";
}
cout << " " << endl;
sort(nums.begin(), nums.end());
vector<int> ans;
int n1 = 0;
int len = nums.size();
for (int i = 0; i < len; i++)
{
cout << n1 << "";
if (nums[i] == n1) {
ans.push_back(nums[i]);
}
n1 = nums[i];
}
for (auto i : ans) {
cout << i << endl;
}
return 0;
}
思路二:
遍历所有,放入哈希表中,若发现哈希表内已经存在该元素,说明有重复的。