前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >371. 两整数之和

371. 两整数之和

作者头像
lucifer210
发布2019-09-10 15:58:45
4760
发布2019-09-10 15:58:45
举报
文章被收录于专栏:脑洞前端

题目描述

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

示例 1:

代码语言:javascript
复制
输入: a = 1, b = 2
输出: 3

示例 2:

代码语言:javascript
复制
输入: a = -2, b = 3
输出: 1

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sum-of-two-integers 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

不能使用加减法来求加法。我们只能朝着位元算的角度来思考了。

由于 异或相同则位0,不同则位1,因此我们可以把异或看成是一种不进位的加减法。

由于 全部位1则位1,否则位0,因此我们可以求与之后左移一位来表示进位。

然后我们对上述两个元算结果递归求解即可。递归的结束条件就是其中一个为0,我们直接返回另一个。

关键点解析

  • 位运算
  • 异或是一种不进位的加减法
  • 求与之后左移一位来可以表示进位

代码

代码语言:javascript
复制
/*
 * @lc app=leetcode id=371 lang=javascript
 *
 * [371] Sum of Two Integers
 */
/**
 * @param {number} a
 * @param {number} b
 * @return {number}
 */
var getSum = function(a, b) {
    if (a === 0) return b;

    if (b === 0) return a;

    return getSum(a ^ b, (a & b) << 1);
};
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 脑洞前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思路
  • 关键点解析
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档