位操作-找到数组中只出现一次的数字

发布时间:2016-12-10 18:51:53 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"位操作-找到数组中只出现一次的数字",主要涉及到位操作-找到数组中只出现一次的数字方面的内容,对于位操作-找到数组中只出现一次的数字感兴趣的同学可以参考一下。

题目一:数组中数字都两两相同,只有一个不同,找出该数字: int findUnique(int* a, int len) { int i = 1; int temp = a[0]; for(; i < len; i++) { temp = temp ^ a[i]; } printf("%d ", temp); } 题目二:数组中数字两两相同,有两个不同,找出这两个: #include <stdlib.h> int a[] = {1,1,2,4,3,3,2,5}; int findXorSum(int* a, int len) { int i = 0; int temp = 0; for(; i < len; i++) { temp = temp ^ a[i]; } return temp; } int findFirstBit1(int n) { int count = 1; while(!( n & 1)) { n = n>>1; count++; } return count; } int isBit1(int a, int count) { a = a >> count-1; return (a & 1); } void findTwoUnique(int* a, int len) { int i = 0; int m = 0, n = 0; int temp = findXorSum(a, len); int count = findFirstBit1(temp); for(; i < len; i++) { if(isBit1(a[i],count)) { m = m ^ a[i]; } else { n = n ^ a[i]; } } printf("%d, %d", m, n); } int main() { findTwoUnique(a,8); }

上一篇:Wince下面添加应用程序,并且自动运行----几种方式介绍
下一篇:黑马程序员—排序与一些算法的认识

相关文章

相关评论