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

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

https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8

先排序,把相同的数字看成一对。
从开始,一对一对判断,如果两个元素相等则跳到下一对,指针i每次加2。
如果一对的两个元素不相等,则把第一个元素存起来,下一循环走一步。
因为每个循环加2,为了达到走一步的效果,故i--。
不过按我的逻辑如果最后元素出现一次应该会溢出..我再查查

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param array int整型vector 
     * @return int整型vector
     */
    vector<int> FindNumsAppearOnce(vector<int>& array) {
        // write code here
        vector<int> res;
        if(array.empty())
            return res;
        sort(array.begin(),array.end());
        for(int i =0;i<array.size();i = i+2)
        {
            if(array[i]!=array[i+1])
            {
                res.push_back(array[i]);
                i--;
                continue;
            }
        }
        return res;
    }
};


全部评论
搞明白了,用的是vector,不存在索引溢出,超出部分元素为0,所以虽AC也有bug,如果最后一个元素是0,且只出现一次,估计就报错。 改善很简单,加一个最后元素判断,然后break就可以。
点赞 回复 分享
发布于 2022-07-15 14:39

相关推荐

10-25 23:12
门头沟学院 Java
点赞 评论 收藏
分享
头像
10-22 19:18
上海大学 后端
jopajhhdjwnqk:水印都叠杀人书了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务