LeetCode刷题笔录Single Number II
来源:互联网 发布:中国人民大学登录网络 编辑:程序博客网 时间:2024/06/04 18:42
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
这题一开始理解有误,以为另外那个数字可以出现N次,只要N不是3.后来发现N只能是1.
方法是把所有数字的32个bit分别加起来。如果所有数字都出现三次,那么32位每一位上最后的和都是3的倍数应该。因此把32个结果%3得到的余数就是单个的数字。
public class Solution { public int singleNumber(int[] A) { int[] bits = new int[32]; Arrays.fill(bits, 0); for(int i = 0; i < A.length; i++){ int mask = 1; for(int j = 0; j < 32; j++){ int shifted = A[i] >> j; if(shifted == 0) break; else bits[j] += shifted & mask; } } int result = 0; for(int i = 0; i < 32; i++){ result += (bits[i] % 3) << i; } return result; }}
另外这里有个很神的blog,里面有种高端的方法,还没深入理解,先记下来。
0 0
- LeetCode刷题笔录Single Number II
- LeetCode刷题笔录 Single Number
- Single Number II - leetcode
- Leetcode: Single Number II
- [LeetCode] Single Number II
- LeetCode: Single Number II
- leetcode -- Single Number II
- [leetcode]Single Number II
- [LeetCode] Single Number II
- 【leetcode】Single Number II
- LeetCode:Single Number II
- Leetcode: Single Number II
- leetcode :Single Number II
- Leetcode Single Number II
- [LeetCode]Single Number II
- leetcode: Single Number (II)
- leetcode Single Number II
- leetcode Single Number II
- IOS 设置任意控件圆角边框
- ORACLE 创建表空间、用户、授权
- 智能电视应用与移动应用开发的比较
- 给程序员介绍一些C++开源库
- Zstack之SerialApp分析笔记1
- LeetCode刷题笔录Single Number II
- Linux 利用HOSTAPD分享WIFI
- windows系统文件夹下最多有多少个子文件
- 自增++运算符的重载
- VS2012 离线帮助文档帮错 指定的用于安装帮助内容的位置无效, 的处理办法
- CXF学习07---自定义拦截器
- 【iOS】iOS之RGB颜色的使用
- c++开源库
- Ubuntu常用命令大全