题目:https://oj.leetcode.com/problems/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?
源码:Java版本
算法分析:时间复杂度O(n),空间复杂度O(1)
public class Solution {
public int singleNumber(int[] A) {
int[] count=new int[Integer.SIZE];
int result=0;
for(int i=0;i<A.length;i++) {
for(int j=0;j<Integer.SIZE;j++) {
if(((1<<j)&A[i])!=0) {
count[j]++;
count[j]%=3;
}
}
}
for(int i=0;i<Integer.SIZE;i++) {
result+=count[i]<<i;
}
return result;
}
}