没有输出的输入是不完整的

0%

剑指offer-数组中只出现一次的数字

本文为剑指 offer 系列第三十九篇。
主要知识点为数组的遍历。有两个只出现一次的数字,找出它们。

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

解题思路

找一个map来存储每个数字以及他们出现的次数。
遍历整个map,找到那两个出现次数为1的数字即可。

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
unordered_map<int,int> mmap;
vector<int> res;
for(auto a:data){
mmap[a]++;
}
for(auto a:mmap){
if(a.second == 1){
res.push_back(a.first);
}
}
*num1 = res[0];
*num2 = res[1];
}
};

时间复杂度为O(n),空间复杂度为O(n)

以上,本题结束!