题目
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。
样例
输入:num1 = 1 , num2 = 2
输出:3

解法:位运算

1、两个整数做异或^,得到各位相加不进位的运算结果;

2、两个整数做与&,然后再左移一位,即得到进位的运算结果;

3、将上面两个结果相加,即重复步骤1,2,直至进位的运算结果为0;

时间复杂度O(logN),空间复杂度O(1)

  1. class Solution {
  2. public:
  3. int add(int num1, int num2){
  4. while (num2) {
  5. int sum = num1 ^ num2;
  6. int carry = (num1 & num2) << 1;
  7. num1 = sum, num2 = carry;
  8. }
  9. return num1;
  10. }
  11. };