剑指offer 数组中只出现一次的数字
来源:互联网 发布:概率和影响矩阵 编辑:程序博客网 时间:2024/05/16 23:49
题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
/** * 任何一个数异或它自己都等于0 * 依次异或数组每一个数字,结果就是2个只出现一次的数字的异或结果x,异或结果肯定不为0 * 找到x二进制表示中第一个1的位置index * 把index = 1的数字分为一组 * 把index = 0的数字分为一组 * 2个只出现一次的数字分在了不同的数组中 * * @param array * @param num1 * @param num2 */ public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { if (array == null || array.length < 2) { num1[0] = num2[0] = 0; return; } int len = array.length; int index; int x = 0; for (int i = 0; i < len; ++i) { x ^= array[i]; } for (index = 0; index < 32; ++index) { if ((x & (1 << index)) != 0) { break; } } for (int i = 0; i < len; i++) { if ((array[i] & (1 << index)) != 0) { num1[0] ^= array[i]; } else { num2[0] ^= array[i]; } } }
0 0
- 剑指offer--数组中只出现一次的数字
- 剑指Offer之 - 数组中只出现一次的数字
- [剑指Offer]40.数组中只出现一次的数字
- 剑指offer-40 数组中只出现一次的数字
- 剑指offer 数组中只出现一次的数字
- 剑指offer 40-数组中只出现一次的数字
- 《剑指offer》数组中只出现一次的数字
- 剑指offer—数组中只出现一次的数字
- 【剑指offer】之数组中只出现一次的数字
- [剑指offer-1351]数组中只出现一次的数字
- 剑指offer:数组中只出现一次的数字
- 剑指offer 40 数组中只出现一次的数字
- 剑指offer:数组中只出现一次的数字
- 剑指offer 数组中只出现一次的数字
- [剑指offer]数组中只出现一次的数字
- 剑指Offer--040-数组中只出现一次的数字
- 剑指offer—数组中只出现一次的数字
- 《剑指offer》:[40]数组中只出现一次的数字
- 入门级基本SQL语句学习(二)
- 多层嵌套List输出
- 【LeetCode】LeetCode——第19题:Remove Nth Node From End of List
- awk 如果日期为20160427,则第二列字段相加
- PHP shuffle() 函数
- 剑指offer 数组中只出现一次的数字
- 登录盈盈理财
- 聊聊HTTPS和SSL/TLS协议
- 通过 objc_setAssociatedObject alert 和 button关联 及传值
- 系统架构设计——设计模式之策略模式
- 源码 、反码、补码 以及java基本类型转换
- leetcode 136 single number
- RxAndroid简单入门。
- 往发件箱存短信