LeetCode Single Number II
2015-08-06 08:31
369 查看
原题链接在这里:https://leetcode.com/problems/single-number-ii/
这道题的关键就是要求no extra memory space. 所以就用到了bit manipulation.
思路就是维护一个32位的数组,因为int 都是32位的,外层loop是对应每一位,内层loop是算所有的数在这一位上出现次数的和。
Mod 3 后剩下的就是那个只出现了一次的数。
Note: 1. Check if current bit is 1 using:
2. 给了一个array代表2进制的数,转化成10进制的数就是用
AC Code:
这道题的关键就是要求no extra memory space. 所以就用到了bit manipulation.
思路就是维护一个32位的数组,因为int 都是32位的,外层loop是对应每一位,内层loop是算所有的数在这一位上出现次数的和。
Mod 3 后剩下的就是那个只出现了一次的数。
Note: 1. Check if current bit is 1 using:
nums[j] >> i & 1但要注意的是bit operator >> & 都比 == operator 运算级别低,所以要加括号。
2. 给了一个array代表2进制的数,转化成10进制的数就是用
res += bitCounter[i]<<i
AC Code:
public class Solution { public int singleNumber(int[] nums) { if(nums == null || nums.length == 0){ return Integer.MIN_VALUE; } int res = 0; int [] bitCounter = new int[32]; for(int i = 0; i < 32 ; i++){ for(int j = 0 ; j < nums.length; j++){ if((nums[j]>>i&1) == 1){ //error bitCounter[i]= (bitCounter[i] + 1)%3; } } } for(int i = 0; i < 32; i++){ res += bitCounter[i]<<i; } return res; } }
相关文章推荐
- 利用Mono.Cecil动态修改程序集来破解商业组件
- LeetCode Single Number II
- 【OC06】类目、延展、协议、计时器(连载八)
- linux挂载光盘,U盘
- 登陆界面的完善
- MVC框架介绍
- 文件目录和库
- JavaScript权威指南_149_第15章_脚本化文档_15.10-其他文档特性-可编辑的内容
- Python编译器实现内幕:添加一个新语句
- 南邮 OJ 1464 Text Messaging
- Python编译器实现内幕:添加一个新语句
- 为何大多数人做出来的图表只是一坨屎?
- PHP register_shutdown_function函数详解
- JAVA基础一大堆0805线程
- UIButton和UITextfield
- 平日收集的理财信息
- hdu 5348 MZL's endless loop 2015 Multi-University Training Contest 5
- Android开发 如何将EditText里面的内容显示在textView里(代码未亲测,如有不足,请留言!)
- Git查看、删除、重命名远程分支和tag
- 南邮 OJ 1462 Meeting Schedule Arrangement