Single Number II
Single Number II
问题:
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?
思路:
hashtable 容易想到
bit vector 新思路
他人代码:
public class Solution { public int singleNumber(int[] A) { /* element in A is 32bit, sum corresponding bits from all elements and mod each by 3 then should left the single number */ int[] sum=new int[32]; int res=0; for(int i=0;i<32;i++) { for(int j=0;j<A.length;j++) { sum[i]+=((A[j]>>i)&1);//sum every bit of all numbers } sum[i]%=3; res+=((sum[i]&1)<<i);// recover the single number } return res; } }
学习之处:
- bit vector 这种数据结构实在太美妙了
- 右移 缩小2倍 左移 添加0 增大2倍 深刻左移和右移的含义
- 数据的变换与恢复方法
need to learn
posted on 2015-03-05 16:36 zhouzhou0615 阅读(126) 评论(0) 编辑 收藏 举报