Skip to content

Latest commit

 

History

History
23 lines (19 loc) · 716 Bytes

面试题 65:不用加减乘除做加法.md

File metadata and controls

23 lines (19 loc) · 716 Bytes

试题链接:85. 不用加减乘除做加法 - AcWing题库

方法一:位运算

  • 思路:先通过异或运算得到不进位加法的值,再通过位与运算后左移一位的结果得到进位的值,最后相加,这个相加的过程相当于重复上面两步,直到进位为 0 停止。
  • 时间复杂度:O(k),k 不会超过整数的最大位数
  • 空间复杂度:O(1)
class Solution {
public:
    int add(int num1, int num2){
        while (num2) {
            int sum = num1 ^ num2;
            int carry = (num1 & num2) << 1;
            num1 = sum;
            num2 = carry;
        }
        
        return num1;
    }
};