第2天--算法(数组中出现次数超过一半的数字,二进制中1的个数)
数组中出现次数超过一半的数字:(摩尔投票法)
public int MoreThanHalfNum_Solution(int [] array) {
int size = array.length;
int count = 0;
int res = array[0];
for(int i = 0;i < size;i ++){
if(count == 0){
res = array[i];
count ++;
}else if(array[i] == res){
count ++;
}else{
count --;
}
}
return res;
}
二进制中1的个数:每次n&(n-1)都会把一个1变成0,知道n变成0
public int NumberOf1(int n) {
int count = 0;
while(n != 0){
n &= (n - 1);
count ++;
}
return count;
}

浙公网安备 33010602011771号