[牛客]寻找奇数出现II练习题
来源:互联网 发布:最新挣钱软件 编辑:程序博客网 时间:2024/06/05 19:56
给定一个整型数组arr,其中有两个数出现了奇数次,其他的数都出现了偶数次,找到这两个数。要求时间复杂度为O(N),额外空间复杂度为O(1)。
给定一个整形数组arr及它的大小n,请返回一个数组,其中两个元素为两个出现了奇数次的元素,请将他们按从小到大排列。
测试样例:
[1,2,4,4,2,1,3,5],8
返回:[3,5]
1、右移运算符>>使指定值的所有位都右移规定的次数。右边移出去的部分扔掉不要,左边空出来的部分用原来的数字填充(这就是所谓的带符号右移)
——比如说5,右移后为00000010。
——假设x=-12,表示为32位int型就是
11111111111111111111111111110100
x>>3即带符号右移3位,结果是
11111111111111111111111111111101,化为十进制等于-3
2、>>>与>>唯一的不同是它无论原来的最左边是什么数,统统都用0填充。
——byte是8位的,-1表示为byte型是11111111(补码表示法)
b>>>4就是无符号右移4位,即00001111,这样结果就是15。
import java.util.*;public class OddAppearance { public int[] findOdds(int[] arr, int n) { int e0 = 0 , e1 = 0; for(int i = 0 ; i < n ; i++){ e0 = e0 ^ arr[i]; } //e0 = a ^ b int point = 1; while(((e0>>point)&1) != 1) point++; for(int i = 0 ; i < n ; i++){ if(((arr[i]>>point)&1) == 1)e1 = e1 ^ arr[i]; } int e2 = e0 ^ e1; int[] result = {Math.min(e1,e2),Math.max(e1,e2)}; return result; }}
1 0
- [牛客]寻找奇数出现II练习题
- [牛客]寻找奇数出现练习题
- 寻找奇数出现II
- 寻找奇数出现II 位运算
- 寻找奇数出现
- 寻找奇数出现 位运算
- 寻找唯一出现奇数次的数
- 趣题:寻找出现了奇数次的数
- 寻找出现了奇数次的数 ---线性时间常数空间
- 【刷题之路】寻找奇数次出现的数
- 在其它数都出现偶数次的数组中寻找出现奇数次的数
- “寻找奇数”的思考
- 寻找只出现一次的数字(LeetCode: Single Number II)
- 【刷题之路】寻找奇数次出现的数2
- 如何在无序数组中寻找两个出现奇数次整数
- 寻找一个数组中出现次数为奇数次的一个数
- Majority Element II 寻找数组中出现次数大于n/3的数
- Python-在奇数中寻找素数
- LeetCode-E-Two Sum II
- zookeeper学习总结
- 进程的切换和系统的一般执行过程
- c++ 模板实现多种排序
- 队列ADT
- [牛客]寻找奇数出现II练习题
- (转)关于禁止ViewPager预加载问题,完美解决!
- Vue.js做select下拉列表(ul-li标签仿select标签)
- 自连接
- HDU 2544 最短路 floyd djkstra(邻接表,邻接矩阵) spfa bellman-ford 模板题
- What Kind of Friends Are You?
- greenDAO 报错: UNIQUE constraint fail(code 1555)的解决方法纪实
- c++子类指针,父类指针,对象的关系
- 稀疏矩阵的相关操作(存储、转置、快速转置、相加)