使用位运算两数相加
Opened this issue · 0 comments
spring011 commented
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): 使用常数大小的额外空间。