n个正整数构成的序列,其中有且仅有一个数在序列中出现了奇数次,其余的数均出现了偶数次。-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

n个正整数构成的序列,其中有且仅有一个数在序列中出现了奇数次,其余的数均出现了偶数次。

n个正整数构成的序列,其中有且仅有一个数在序列中出现了奇数次,其余的数均出现了偶数次。找出出现了奇数次的那个数。
这题有一个解法:从头到尾将这n个数异或一遍,得到的数即为要找的那个数。
如果有且仅有两个数出现了奇数次,那该怎么算出这两个数,用这个思路

展开
收起
a123456678 2016-03-09 13:18:01 4064 0
1 条回答
写回答
取消 提交回答
  • a123456678
    #include <iostream>
    using namespace std;
    int main()
    {
        int n;
        int *p;
        while (cin >> n)
        {
            p = new int[n];
            for (int i = 0; i < n; i++)
                cin >> p[i];
            int c = p[0];
            for (int j = 1; j < n; j++) {
                c = c^p[j];
            }
            for (int j = 0; j < n; j++) {
                for (int k = j + 1; k < n; k++) {
                    if ((c ^ (p[j] ^ p[k])) == 0) {
                        if (p[j] > p[k]) 
                            cout << p[k] << ' ' << p[j] << endl;
                        else 
                            cout << p[j] << ' ' << p[k] << endl;
                        j = n;
                    }
                }
            }
        }
    }
    2019-07-17 18:55:52
    赞同 展开评论 打赏
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载