题目:
Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements that appear twice in this array.
Could you do it without extra space and in O(n) runtime?
Example:
Input: [4,3,2,7,8,2,3,1] Output: [2,3]
思路:采用下表数组来记录输入的vector里出现的数字次数,要注意,数组大小<nums.size(),而判断数组里的值是否为2时,循环到<=nums.size()结束,等于号要考虑好是否加。其次,最后要加上数组清零,这里采用了最简单的循环置零的方法。
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
int num[1000000];
for(int i=0;i<nums.size();i++)
{
num[nums[i]]++;
}
vector<int> v;
for(int i=1;i<=nums.size();i++)
{
if(num[i]==2)
v.push_back(i);
}
for(int i=1;i<=nums.size();i++)
{
num[i]=0;
}
return v;
}
};