Skip to content

371. 两整数之和

leetCode-371. 两整数之和

TIP

分析: 不能用运算,就只能用二进制 异或算法是无进位加法 二进制中 1 和 1 可以产生进位, 1左移就变成了10,相当于进位

11 + 11 异或运算 11 ^ 11 = 00 进位是 11 & 11 << 1 = 110 那么11+11就可以转化成 00 + 110

第二次 00 + 110

异或运算 00 ^ 110 = 110 进位是 00 & 110 << 1 = 0

第三次 110 + 0 直接返回 110

js
/**
 * @param {number} a
 * @param {number} b
 * @return {number}
 */
var getSum = function(a, b) {
    if (b === 0) return a;
    return getSum(a ^ b, (a & b) << 1);
};

MIT Licensed