找出数组中不同的两个数
来源:互联网 发布:nginx 点播服务器 编辑:程序博客网 时间:2024/06/10 15:12
- 题目:数组中除了两个数与数组中任何数都不同,剩下的数两两相同,找出这两个不同的数。要求时间复杂度为O(n),空间复杂度为O(1)
/** * 在数组中找出不相同的两个数 * @author Rose * */public class TwoDiffOfArr { public static void main(String[] args) { getDiffNum(new int[]{1,4,5,2,5,4}); } private static void getDiffNum(int[] array){ if(array == null || array.length < 2) return; //0和数组中的数两两xor,得到的结果是不同的两位数的抑或结果 int m = 0; for (int i = 0; i < array.length; i++) m ^= array[i]; int reslut1 = 0; int result2 = 0; //将两数亦或的结果转为二进制数 String binaryInteger = Integer.toBinaryString(m); //找到二进制数中最后一位为1的位置 int index = binaryInteger.length() - (binaryInteger.lastIndexOf("1")+1); //将数组中的数按照index位是否为1分为两组,0和每组的数字两两xor,最后的值就是不同的数 for (int i = 0; i < array.length; i++) { if(((array[i] >> index) & 1) == 1) reslut1 ^= array[i]; else result2 ^= array[i]; } System.out.println("不同的两个数是:" + reslut1 +" " + result2); }}
阅读全文
0 0
- 找出数组中不同的两个数
- 找出两个数组中不同的元素
- 删除数组中相同的数,统计两个数组中重复数个数并把不同数找出来
- 找出不同的两个数
- 华为机试——找出数组中不同的两个数
- 找出数组中两个数之和为指定的数
- 比较两个数组中不同的数
- 数组------找出数组中只出现一次的两个数
- 一个数组中找出2个不同的数
- 找出整数数组中两个数差值的绝对值最小
- 找出整数数组中两个数差值的绝对值最小
- 找出数组中两个只出现一次的数
- 找出两个数组中满足给定和的数对
- C++找出两个数组中不相同的数
- 找出数组中两个只出现了一次的数
- 从数组中找出最大的前两个数
- 找出数组中只出现一次的两个数
- 找出一个数组中只出现一次的两个数
- Another Easy Problem FZU
- Dropping water balloons UVA
- 搭建简单的struts2框架
- 现代计算机的存储体系 (转载)
- 关于大数相乘问题(Java实现)
- 找出数组中不同的两个数
- Spring+MyBatis多数据源配置实现
- 第五周java作业
- 考试总结2
- 01Redis学习
- lintcode Guess Number Game II
- 【福分系统】bootstrap表格控件
- jquery实现品牌列表的显示
- 自定义bs soup的抓取函数,查找不含某个class属性tag 以及一个小问题'NoneType' object has no attribute '__getitem__'