本文为剑指 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)
以上,本题结束!