tailgo / poorguy-fly

1 stars 0 forks source link

461. 汉明距离(简单) - https://leetcode-cn.com/problems/hamming-distance/submissions/ #11

Open tailgo opened 5 years ago

tailgo commented 5 years ago

先异或,用与算距离 执行用时 : 80 ms, 在Hamming Distance的JavaScript提交中击败了96.67% 的用户 内存消耗 : 33.5 MB, 在Hamming Distance的JavaScript提交中击败了83.74% 的用户

/**
 * @param {number} x
 * @param {number} y
 * @return {number}
 */
var hammingDistance = function(x, y) {
    var t = x ^ y;
    var sum = 0;
    while (t) {
        sum += t & 1;
        t = t >> 1;
    }
    return sum;
};

解法二,利用二进制特性,n & (n - 1) 的结果会比 n 少一个 1。 执行用时 : 76 ms, 在Hamming Distance的JavaScript提交中击败了97.27% 的用户 内存消耗 : 33.5 MB, 在Hamming Distance的JavaScript提交中击败了90.96% 的用户

/**
 * @param {number} x
 * @param {number} y
 * @return {number}
 */
var hammingDistance = function(x, y) {
    var t = x ^ y;
    var sum = 0;
    while (t) {
        sum++;
        t = t & (t - 1)
    }
    return sum;
};