位操作-找到数组中只出现一次的数字
2013-08-25 10:43
162 查看
题目一:数组中数字都两两相同,只有一个不同,找出该数字:
题目二:数组中数字两两相同,有两个不同,找出这两个:
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); }
相关文章推荐
- 在其他数都出现k次的数组中找到仅出现过一次的数字
- 九度OJ 1351 数组中只出现一次的数字 (位操作)
- 找到数组中只出现一次的数字
- 数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法,找到x
- 数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法,找到x。
- 【查找】【位操作】数组中,除某一个数字x之外,其他数字都出现三次,而x出现一次,找出x
- 【leetcode】在一堆每个数字都出现三次的数组中,找到那个只出现一次的数(Single Number II)
- 算法题:从数组找数字(网易2017校园招聘) 2017-10-10 算法爱好者 (点击上方公众号,可快速关注) 给定一个数组,除了一个数出现 1 次之外,其余数都出现 3 次。找出出现一次的数。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
- 40:数组中只出现一次的数字
- 找到数组中出现次数超过一半的数字
- 数组中只出现一次的数字(异或方法)
- 3.有一个整形数组,只有一个数字出现了一次,请编写程序判断这个数字(大概题目就是这样的,记不太清了)
- 数组中只出现一次的数字
- 算法习题61:找出数组中两个只出现一次的数字:一个整型数组里除了两个数字之外,其他的数字都出现了两次
- 数组中只出现一次的数字41
- 数组中只出现一次的数字
- 《剑指offer》——数组中只出现一次的数字
- 找到给定数组中出现次数大于长度一半的数字,若没有,则返回0
- 面试题_找出数组中两个只出现一次的数字