477. 汉明距离总和

2020-08-25  本文已影响0人  bangbang2
image.png

求数组两两数字,有不一样的位数
如果利用暴力解法,会超时
Java的int是32位的,看看数组里的数对应位数的0与1的个数
相当于乘法公式


image.png
class Solution {
    public int totalHammingDistance(int[] nums) {
      int res=0;
      for(int i=0;i<32;i++){
          int zero=0;
          int one=0;
          for(int j=0;j<nums.length;j++){
              if((nums[j]&1)==1){
                  one++;
                  nums[j]=nums[j]>>>1;
              }else{
                  zero++;
                  nums[j]=nums[j]>>>1;
              }
          }
          res=res+zero*one;
      }
      return res;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读