Coding interview:位運算2
阿新 • • 發佈:2018-12-13
找出正數中二進位制1出現的次數
public int count1(int n) {
int res = 0;
while (n!=0){
res += n&1;
n>>>=1;
}
return res;
}
其他數都出現偶數次的陣列中,找到唯一個出現奇數次的數
public int findTheOnce(int[]arrray){ int res = 0; for(int a:arrray){ res ^=a; } return res; }
其他都出現K次的陣列中,找到唯一一個只出現1次的數
public int findTheOnceInKTimes(int[]array,int k){ int res = 0; int sum = 0; for(int i=0;i<31;i++) { sum = 0; for(int a:array){ if((a&(1<<i))!=0){ sum++; } } if(sum % k == 1){ res += 1<<i; } } return res; }