用异或快速找出不同的数
来源:互联网 发布:数据科学家的职业规划 编辑:程序博客网 时间:2024/06/02 06:57
在一个数组中除1个数字只出现1次外,其它数字都出现了2次, 要求尽快找出这1个数字
/** * 快速找出不同的数 * @param args */public static void main(String[] args) {int[] in = new int[]{9,3,3,4,5,4,5,8,6,6,8};int result = 0;for(int i =0;i<in.length;i++){/** *和0异或等于本身,自己和自己异或等于0 ,异或同一个数两次仍为原数 */result ^= in[i];}System.out.println(result);}
在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找出这两个数字。
public static void main(String[] args) {int[] i = new int[]{7,9,2,2,3,3,4,4,5,5};System.out.println(getDifferent(i));}public static String getDifferent(int[] i){int k = 0;for(int m=0;m<i.length;m++){k ^= i[m];}int n ;for(n=0;n<Integer.toBinaryString(k).getBytes().length;n++){if(((k>>n)&1)==1){break;}}int p=0,q=0;for(int j=0;j<i.length;j++){if(((i[j]>>n)&1)==0){p ^= i[j];}else{q ^= i[j];}} StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("p="+p) .append(",") .append("q="+q);return stringBuilder.toString();}
阅读全文
0 0
- 用异或快速找出不同的数
- HDU 1563 Find your present! 找出不同的数 异或
- 找出不同的两个数
- 快速找出两个目录的不同
- 找出数组中不同的两个数
- 通过异或快速找到不同的字符元素
- 快速找出List集合的相同与不同元素集合
- 一个数组中找出2个不同的数
- 算法面试题之找出不同的数
- 利用异或的特性解决,找出重复数的问题
- 找出N个浮点数中最大的k个不同的浮点数
- 百度面试题之找出数组中之出现一次的两个数(异或的巧妙应用)
- 快速寻找满足条件的两个数或三个数
- 找出缺少的数
- 找出缺失的数
- 找出单个的数
- 水仙花数的找出
- 找出不一样的数
- 【设计模式】之代理模式
- Android相机调用后直接闪退的问题
- Spring的两种定时器-task和quartz
- matlab 设置绘图的大小,字号,线宽,字体--按投稿要求
- 部分国外顶级会议论文没有关键词
- 用异或快速找出不同的数
- Kotlin,您好
- 如鹏java学习进程 获取数组最大值
- webSocket--web客户端方面
- C#网络编程(二、.Net网络编程基本概念)
- Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
- 冒泡法对数排列(由小到大)
- easyui treegrid 获取子节点
- Visio画任意曲线