索引请参考:系列目录
-
题目:
- 给定一个整数数组a,其中1≤a[i]≤n(n为数组长度),其中有些元素出现两次而其他元素出现一次,找到所有出现两次的元素
- 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?
-
示例:
- 输入[4,3,2,7,8,2,3,1]
- 输出[2,3]
-
解答
class Solution { public: vector<int> findDuplicates(vector<int>& nums) { vector<int>result; map<int,int>mp; if(nums.size() == 1) return result; for(int i=0; i < nums.size(); i++) { if(mp.count(nums[i]) > 0) result.push_back(nums[i]); mp[nums[i]]++; } return result; } };
class Solution { public: vector<int> findDuplicates(vector<int>& nums) { std::vector<int>result; std::map<int, int>mp; for (int i = 0;i < nums.size();i++) mp[nums[i]]++; for (auto elem : mp) { if (elem.second == 2) result.push_back(elem.first); } return result; } };
- 结果