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

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

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

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

将数组中的数字分成两组,使用按位异或找出只出现一次的数字。

全部评论

相关推荐

05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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