LeetCode-371-两整数之和

  |   0 评论   |   0 浏览

题目描述

不使用运算符 + 和 - ,计算两整数 a 、b 之和。

示例 1:

输入: a = 1, b = 2
输出: 3
示例 2:

输入: a = -2, b = 3
输出: 1

解法

  1. 无进位加法使用异或运算计算得出
  2. 进位结果使用与运算移位运算计算得出
  3. 循环此过程,直到进位为 0

非递归写法

public int missingNumber(int[] nums) {
        int res = nums.length;
        for(int i = 0; i < nums.length; i++) {
            res = res ^ i ^ nums[i];
        }
        return res;
}

运行结果:

image.png

递归写法:

 public int getSum(int a, int b) {
        return b == 0 ? a : getSum(a ^ b, (a & b) << 1);
 }

运行结果:

image.png


标题:LeetCode-371-两整数之和
作者:guobing
地址:http://www.guobingwei.tech/articles/2020/11/02/1604276983746.html