有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
来源:互联网 发布:手机打马赛克软件 编辑:程序博客网 时间:2024/04/29 00:49
资料出处:http://blog.csdn.net/zhengzhb/article/details/7289325
给出2n+1个数,其中有2n个数出现过两次,如何用最简便的方法找出里面只出现了一次的那个数。
例如这样一组数3,3,1,2,4,2,5,5,4,其中只有1出现了1次,其他都是出现了2次,如何找出其中的1?
最简便的方法是使用异或,代码如下:
- public class XOR {
- public static void main(String[] args){
- int[] arr={3,3,1,2,4,2,5,5,4};
- int res=0;//初始值
- for(int i=0;i<arr.length;i++){
- res ^=arr[i];
- }
- System.out.println(res);
- }
- }
运行结果:
1
算法的原理就是:任何数异或0值不变,任何数与自己异或值为0。
因此一个数两次异或同一个数,值不变。
运算过程:
0 ^ 3===>3
3 ^ 3===>0
0 ^ 1===>1
1 ^ 2===>3
3 ^ 4===>7
7 ^ 2===>5
5 ^ 5===>0
0 ^ 5===>5
5 ^ 4===>1
*************************
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- 经典算法-给出2n+1个数,其中有2n个数出现过两次,用简便的最方法求出现一次的数
- 第一个问题是给出2n+1个数,其中有n个数是成对出现的,让我找出里面只出现了一次的那个数。
- 一个数组存放了2n+1个整数,其中有n个数出现了2次,1个数出现了1次,找出出现1次的数是多少?
- 有N个数,其中2个数出现了奇数次(这两个数不相等),其他数都出现偶数次,问用O(1)的空间复杂度,找出这两个数,不需要知道具体位置,只需要知道这两个值。
- 数组a[N],存放了1至N-1个数,其中某个数重复一次,找出重复的那个数
- n个数出现2次,2个数出现1次,找出这两个数
- n个数中,只有两个数只出现一次,其余数都出现两次,求这两个数
- 给一个很大的数组,里面有两个数只出现过一次,其他数都出现过两次,把这两个数找出来
- 第三题,给一个很大的数组,里面有两个数只出现过一次,其他数都出现过两次,把这两个数找出来。
- 给出101个整数数,这101个数是1~100中的数,其中只有一个是出现两次的数,要求找出这个数。
- 数组a[]存放1至N-1个数,其中某个数重复一次,写个函数找出那个数:
- 黑马程序员--抽象类与接口
- 从头开始创建新图像
- 算法学习之快速排序算法
- 打开自己笔记本摄像头小程序之对比
- CH04简单数据类型转换
- 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
- init.d详解
- 数据库总结
- 黑马程序员_Java基础_集合框架2
- interceptor-stack跟interceptor-ref的区别
- 【Transact-SQL】统计某字段中的值第一次出现后的2小时内出现的次数
- 架设samba服务器
- 回味无穷的一句话
- DedeCMS中修改模板:让页面中显示各栏目的内容列表