spring011/algorithm

使用位运算两数相加

Opened this issue · 0 comments

function add(a, b) {
  while (b !== 0) {//当进位为0时跳出
    let c = (a & b) << 1; //c进位
    a ^= b; // a = 非进位和
    b = c; // b = 进位
  }
  return a
}
  • 时间复杂度 O(1): 需循环O(1) 时间;每轮中的常数次位操作使用 O(1) 时间。
  • 空间复杂度 O(1): 使用常数大小的额外空间。