leecode single numer

时间:2021-01-24 05:51:16
http://www.acmerblog.com/leetcode-single-number-ii-5394.html acm之家的讲解总是那么到位

public class Solution {
public int singleNumber(int[] A) {
int ans=0; //0^X=X x^X=x
for(int i=0;i<A.length;i++)
{
ans=ans^A[i];
}
return ans;
}
}

sing number (2)

高端方法太难了,不想看了,位运算点到为止吧,

public class Solution {
public int singleNumber(int[] A) {
int count[]=new int[32]; //统计每个位1的个数,Int 32,因为都是成三出现,所以最终每个位一的个数为count[j]%3.其实他的
结果只能为 1或0,2是不可能的。
int result=0;
for(int j=0;j<32;j++)
{
for(int i=0;i<A.length;i++)
{ int n=A[i];
if(((n>>j)&1)==1){ //这句话纠结死我了,原来==的优先级大于&,所以别忘了加括号啊
count[j]=(count[j]+1)%3;
}
} result=result|(count[j]<<j); } return result; } }