Single Number通用解
来源:互联网 发布:dokuwiki nginx 编辑:程序博客网 时间:2024/06/06 04:55
Question:Given an array of integers, every element appears k times except for one. Find that single one.
当k=2的时候,很明显可以用异或解。因为:
A^B=B^A
A^B^B=A
所以当k>2的时候,受异或的启发,同样需要一种运算符,满足:
A#B=B#A
A#B#…#B=A
本质上,就是要维持一个长度为32的数组bit[],记录下对于array中的每一个数,每一位上1的出现次数。每出现k次,就把bit[i]重置为0,即实现了上面的#运算符。
public int singleNumber(int[] nums) { int[] bit = new int[32]; for (int i = 0; i < 32; i++) { bit[i] = 0; } for (int i = 0; i < nums.length; i++) { int number = nums[i]; for (int j = 0; j < 32; j++) { boolean hasBit = ((number & (1 << j)) != 0); if (hasBit) bit[j] = (bit[j] + 1) % 3; } } int target = 0; for (int i = 0; i < 32; i++) { if (bit[i] > 0) target = target | (1 << i); } return target;}
0 0
- Single Number通用解
- Single Number通用解法
- leetcode中Single Number II的一个通用解法
- Single Number
- single number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- single number
- Android6.0的phone应用源码分析(3)——phone 拨号UI分析
- java 之和redis
- Android图片加载缓存库<2>
- Dropzone应用
- Spring AOP--返回通知,异常通知和环绕通知(顶)
- Single Number通用解
- 数据库事物隔离级别
- 图像处理算法基础(五)---拉普拉斯变换自实现与opencv对比
- 2015.12.15记录-注解
- js 获取width 的方法总结
- 面试题13:数值的整数次方(offer)
- 学习博客
- live555编译、播放示例
- 虚拟现实技术,华锐视点