LintCode | 1. A + B 问题

    xiaoxiao2021-03-25  142

    给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。


    class Solution { public int aplusb(int a, int b) { if(b == 0) return a; while(b != 0) { //对于是否产生加法进位,仅在1+1时需要,所以使用与运算 int carry = a & b; //对于加法位运算,1+1->0 1+0->1 0+0->0,所以使用异或 a = a ^ b; //进位是对前一位操作,故右移 b = carry << 1; } return a; } }

    使用递归实现如下

    class Solution { public int aplusb(int a, int b) { if(b == 0) return a; return aplusb2(a ^ b, (a & b) << 1); } }
    转载请注明原文地址: https://ju.6miu.com/read-5415.html

    最新回复(0)