刷題-Leetcode-442. 陣列中重複的資料(陣列、雜湊)
阿新 • • 發佈:2021-01-28
442. 陣列中重複的資料
題目連結
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/find-all-duplicates-in-an-array
題目描述
給定一個整數陣列 a,其中1 ≤ a[i] ≤ n (n為陣列長度), 其中有些元素出現兩次而其他元素出現一次。
找到所有出現兩次的元素。
你可以不用到任何額外空間並在O(n)時間複雜度內解決這個問題嗎?
示例:
輸入:
[4,3,2,7,8,2,3,1]
輸出:
[2,3]
題目分析
map的基本操作函式
size() 返回map中元素的個數
count() 返回指定元素出現的次數
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
vector<int> res;
map < int, int> mp;
for (int i = 0; i < nums.size(); i++) {
if (!mp.count(nums[i])) {
mp[nums[i]]++;
}
else {
res.push_back(nums[i]);
}
}
return res;
}
};