[LeetCode]Total Hamming Distance(Java)

来源:互联网 发布:程序员的自我修养pdf 编辑:程序博客网 时间:2024/06/03 15:05

这道题计算数组中所有元素的汉明距离

我的解法很常规。结果超时,时间O(n2)

这是我的答案

public class Solution {    public int totalHammingDistance(int[] nums) {        int result = 0;        for(int i = 0;i < nums.length;i++){            for(int j = i+1;j < nums.length;j++)                result += hammingDistance(nums[i],nums[j]);        }                 return result;    }    public int hammingDistance(int first,int second){        int distance = 0;        int result = first ^ second;        while(result!=0){            distance += (result>>1) & 1;            result = result>>1;        }        return distance;    }}
solution的答案是取每位的所有元素为1的个数,然后用总数-个数就是该位的汉明距离为1的总数

public class Solution {    public int totalHammingDistance(int[] nums) {        int total = 0, n = nums.length;        for (int j=0;j<32;j++) {            int bitCount = 0;            for (int i=0;i<n;i++)                 bitCount += (nums[i] >> j) & 1;            total += bitCount*(n - bitCount);        }        return total;    }}

2017/3/3


0 0
原创粉丝点击