371. 两整数之和

leetCode链表

分析: 不能用运算,就只能用二进制 异或算法是无进位加法 二进制中 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

/**
 * @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);
};
1
2
3
4
5
6
7
8
9
更新时间: 2022-03-25 17:04