c语言编程题,求代码,急

众所周知, a ^ a = 0, a ^ 0 = a, ^ 即是异或运算, 这是满足交换律的, 也就是说 a ^ b == b ^ a.

所以如果存在这么一个非空整数数组, 里面除了某个元素只出现一次以外,其余每个元素均出现了两次.

根据异或的这些性质, 我们只需要把所有的元素异或一遍, 得到的结果就是那个只出现了一次的元素.

AunSmile 对 yipeng 缓缓的说道.

声毕, AunSmile 邪魅一笑,

你都问了我好几个问题了, 也轮到我问你了吧!

那么现在给定一个非空整数数组,

除了某个元素只出现一次以外, 其余每个元素均出现了三次.

请你找出那个只出现了一次的元素吧哈哈哈哈!!!

input
输入第一行为一个正整数 n (n < 500000), 表示数组长度, 接下来 n 个整数(int 范围内).

output
只出现了一次的元素.

Sample Input
10
1
1
1
2
2
2
3
3
3
4
Sample Output
4

假设输入的数存在数组A中,个数为n
int ones = 0;
int twos = 0;
int threes;
for(int i = 0; i < n; i++){
int t = A[i];
twos |= ones&t;
ones ^= t;
threes = ones&twos;
ones &= ~threes;
twos &= ~threes;
}
最终的ones就是结果追问

看不dong...

温馨提示:答案为网友推荐,仅供参考