2N+1个数,除了其中一个数之外,其他均为两两成对,寻找这个落单的数
来源:互联网 发布:木村文乃 知乎 编辑:程序博客网 时间:2024/05/17 03:38
有2n+1个数,其中2n个数两两成对,1个数落单,找出这个数。要求O(n)的时间复杂度,O(1)的空间复杂度。进阶问题:如果有2n+2个数,其中有2个数落单,该怎么办?
针对1个数落单情况,代码如下:
public class Solution {如果有两个数落单,那么上述算法操作的最终结果就是落单的两个数的异或结果,假设m=a^b,m中如果第k位二进制位上为1,那么说明a和b在相应位置上不同,那么根据这个位置将2n+2个数分为两组,每组分别使用上述算法就可以得到最终结果。
/**
*@param A : an integer array
*return : a integer
*/
public int singleNumber(int[] A) {
if (A.length == 0) {
return 0;
}
int n = A[0];
for(int i = 1; i < A.length; i++) {
n = n ^ A[i];
}
return n;
}
}
0 0
- 2N+1个数,除了其中一个数之外,其他均为两两成对,寻找这个落单的数
- 序列中,除了2个数字只出现一次外,其他数字成对出现。找出落单的2个数。
- 第一个问题是给出2n+1个数,其中有n个数是成对出现的,让我找出里面只出现了一次的那个数。
- 一道笔试题——由数组中除了一个数之外的其他数的乘积生成另一个数组
- 数组中所有数都出现了3次,除了其中一个数,找出这个数
- 寻找两数之和为某个值
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 给有n个数的数组a,其中超过一半的数为一个定值,在不排序,不开额外数组情况下,以最高效的方法找出这个数。
- 长度为n的数组,有一个数m重复出现了n/2+1次,找出这个数
- 算法题29 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- 算法题29 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- MJExtension属性名替换
- Adobe全系列CC版 2014 Win+Mac 迅雷下载+网盘
- Using Eclipse with PyDev to build a Python development environment on Windows platform
- 解决Ubuntu更新nVidia显卡驱动后黑屏问题
- android 中 dumpsys 命令使用
- 2N+1个数,除了其中一个数之外,其他均为两两成对,寻找这个落单的数
- Mysql创建新用户方法
- 大型网站架构(1) 历史演变(上)
- grep命令常见用法
- 2287: [POJ Challenge]消失之物 DP
- 利用Keepalived构建MySQL主主复制
- 使用maven搭建XML风格的Spring MVC+WebSocket+sockjs+STOMP+ActiveMQ应用
- 杭电 hdu 1166 敌兵布阵【树状数组过】
- Python中零碎知识点记录