NC75数组中只出现一次的数字(位运算法)

NC75数组中只出现一次的数字(位运算法)

- 1、题目描述:
图片说明

- 2、题目链接:
https://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?tpId=117&&tqId=34997&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking

-3、 设计思想:
图片说明
详细操作流程看下图:

图片说明

-5、代码:
c++版本:

class Solution
{
public:
    void FindNumsAppearOnce(vector<int> data,int* num1,int *num2)
    {
        int n = data.size();//求出数组的长度
        int eor = 0; //用来保存那两个只出现1次的数的异或值
        for(int i = 0; i < n; i ++)
        {
            eor ^= data[i];//将整个数组异或
        }
        /// eor = a ^ b
        /// eor != 0
        /// eor必然有一个位置上是1
        int rightOne = eor & (~eor + 1); // 提取出最右的1
        int onlyOne = 0;//用来保存只出现1次的数的其中的那一个
        for(int i = 0; i < n; i ++)
        {
            if((data[i] & rightOne) != 0)
            {
                onlyOne ^= data[i];//寻找那个数
            }
        }
        *num1 = onlyOne;
        *num2 = (eor ^ onlyOne);

  

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java岗位面试真题宝典 文章被收录于专栏

本面试宝典均来自校招面试题目大数据进行的整理

全部评论

相关推荐

程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
12-27 22:46
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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