第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;
}

 

posted @ 2021-09-16 21:00  现在开始努力  阅读(29)  评论(0)    收藏  举报