题解 | #数组中只出现一次的两个数字#

数组中只出现一次的两个数字

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差点儿~~~

全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务