继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【leetcode74】Sum of Two Integers(不用+,-求两数之和)

jmesSehng
关注TA
已关注
手记 149
粉丝 424
获赞 5663
题目描述:
不用+,-求两个数的和
原文描述:

Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.

Example:

Given a = 1 and b = 2, return 3.

方法一:用位运算模拟加法
思路1:
  • 异或又被称其为“模2加法“
  • 设置变量recipe模拟进位数字,模拟加法的实现过程
代码:

这里写图片描述

方法二:异或求值
思路二:
  • a^b,求得结果
  • a&b,求得进位
  • 相加
代码:
public class Solution {
    public int getSum(int a, int b) {
        while (b != 0) {
            int c = a & b; //carry
            a ^= b; //add 
            b = c << 1;
        }
        return a;
    }
}
更多的leetcode的经典算法,查看我的leetcode专栏
打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

抱歉,我看错了。。。

        r   recipe  c    a     b
        0   1        0   (3)   (10)
       ----------------------
         1   2       0    1   5
         1   4       1    0   2
         5   8       0    0   1
      (13) 16      0    0   0

方法一我试了下好像不行,要把第6行

r = recipe;

改为这个才行:

r += recipe;

查看全部评论