问题描述
- n个正整数构成的序列,其中有且仅有一个数在序列中出现了奇数次,其余的数均出现了偶数次。
-
n个正整数构成的序列,其中有且仅有一个数在序列中出现了奇数次,其余的数均出现了偶数次。找出出现了奇数次的那个数。
这题有一个解法:从头到尾将这n个数异或一遍,得到的数即为要找的那个数。
如果有且仅有两个数出现了奇数次,那该怎么算出这两个数,用这个思路
解决方案
http://www.matrix67.com/blog/archives/511
解决方案二:
#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;
}
}
}
}
}
时间: 2024-08-02 21:17:56