题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型vector
* @return int整型vector
*/
vector<int> FindNumsAppearOnce(vector<int>& array) {
// 定义一个储存结果的数组
vector<int> res;
// 定义哈希表,unordered_map底层是哈希表;map底层是红黑树
// unordered_map插入键值对不会根据键的大小排序,最后要调整两个元素的次序
// map插入键值对会根据键的大小排序,最后不需要调整两个元素的次序
unordered_map<int, int> hashmap;
// 将元素插入到哈希表中
for(auto it : array){
hashmap[it]++;
}
// 再次遍历,将只出现1次的元素,放入结果数组res中
for(auto it : hashmap){
if(it.second == 1){
res.push_back(it.first);
}
}
// 由于使用的是unordered_map,最后需要调整次序
if(res[0] < res[1])
return res;
else return {res[1], res[0]};
}
};
这道题个人感觉还是用map好点儿,根据键值自动排序,最后不用调整次序,可能时间复杂度方面比unordered_map差点儿~~~
查看8道真题和解析
