算法题:从数组找数字(网易2017校园招聘)



给定一个数组,除了一个数出现 1 次之外,其余数都出现 3 次。找出出现一次的数。如:{1, 2, 1, 2, 1, 2, 7}, 找出 7。


格式:


第一行输入一个数n,代表数组的长度,接下来一行输入数组A[n],(输入的数组必须满足问题描述的要求),最后输出只出现一次的数。


要求:


你的算法只能是线性时间的复杂度,并且不能使用额外的空间哦~


样例输入


4
0 0 0 5


样例输出


5



public static int search(int n, int[] arr) {

int a = 0, b = 0;
for (int i = 0; i < n; i++) {
b = a & (b ^ arr[i]);
a = b | (a ^ arr[i]);
}
return a;
}

给定一个数组,除了一个数出现 1 次之外,其余数都出现 3 次。找出出现一次的数。如:{1, 2, 1, 2, 1, 2, 7}, 找出 7。


格式:


第一行输入一个数n,代表数组的长度,接下来一行输入数组A[n],(输入的数组必须满足问题描述的要求),最后输出只出现一次的数。


要求:


你的算法只能是线性时间的复杂度,并且不能使用额外的空间哦~


样例输入


4
0 0 0 5


样例输出


5



请通过评论说出你的解答。如果有必要,请介绍一下解题思路。在评论中分享解题思路可以让其他人了解你的想法。你的解答帮助了其他人,其他人的解答也将帮助到你。期待大家参与 ^_^

猜你喜欢

转载自blog.csdn.net/ls1120623840/article/details/78249704