题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
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差点儿~~~