leecode single numer

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; } }
原文地址:https://www.cnblogs.com/hansongjiang/p/3815426.html