leetcode 371. 两整数之和

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

示例 1:

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

示例 2:

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

递归解法

  • a ^ b可以得到两数相加不进位的加法结果

  • (a & b) << 1可以得到两数相加产生的进位

将不进位的加法结果与进位相加,即可得到两数相加的实际结果。需要注意的是:不进位加法结果与进位相加有可能再次造成进位,所以需要迭代处理,直到不再产生新的进位为止。

根据如上思路,可以比较容易地得到递归的解法

/*
作者:hawjk
链接:https://leetcode-cn.com/problems/sum-of-two-integers/solution/cliang-chong-jie-fa-tian-keng-wei-yun-suan-de-yue-/
*/
int getSum(int a, int b) {if (!(a & b)) return a ^ b;   // 当进位为0时,返回两数相加不进位的加法结果return getSum(a ^ b, ((unsigned int)(a & b)) << 1);    // 否则,递归计算不进位加法结果与进位之和
}

非递归解法

1.先做异或运算,结果为进位标志,在做与运算并左移1位,在将没有进位的结果与与运算的结果做异或运算得结果。

2.a为结果,b为进位结果,不断检查b是否为0判断是否还有进位。

class Solution {
public:int getSum(int a, int b) {while(b){int temp = a ^ b;b = (unsigned int)((a & b)) << 1;a = temp;}return a;}
};

一行代码解法

class Solution {
public:int getSum(int a, int b) {return !(a && b) ? a | b : getSum(a ^ b, (unsigned int)(a & b) << 1);}
};

leetcode 371. 两整数之和相关推荐

  1. LeetCode 371. 两整数之和(异或操作) / 639. 解码方法 II(动态规划)/ 437. 路径总和 III

    371. 两整数之和 2021.9.26 每日一题 题目描述 给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和. 示例 1: 输入:a = 1, b = 2 ...

  2. LeetCode 371. 两整数之和(位运算加法)

    1. 题目 不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a .b ​​​​​​​之和. 示例 1: 输入: a = 1, b = 2 输出: 3示例 2: 输入: a = -2 ...

  3. leetcode 371. 两整数之和(不用算术运算符实现两个数的加法:按位异或原理)

    题目 https://leetcode-cn.com/problems/sum-of-two-integers/ 题解 按位异或:相同为0,不同为1 对于二进制的加法运算,若不考虑进位,则 1+1=0 ...

  4. 371. 两整数之和

    1. 题目 不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a .b ​​​​​​​之和. 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = - ...

  5. LeetCode【位运算】371. 两整数之和

    不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a .b ​​​​​​​之和. 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = -2, b = ...

  6. leetcode 371. Sum of Two Integers | 371. 两整数之和(补码运算)

    题目 https://leetcode.com/problems/sum-of-two-integers/ 题解 根据 related topics 可知,本题考察二进制运算. 第一次提交的时候,没想 ...

  7. ​LeetCode刷题实战371:两整数之和

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  8. [leetcode]1.两数之和

    [leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...

  9. [hashmap|空间换时间] leetcode 1 两数之和

    [hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...

最新文章

  1. 如何 SQL Server 2005 实例之间传输登录和密码
  2. java导出excel压缩包_java动态导出excel压缩成zip下载的方法
  3. 在centos7上编译安装nginx
  4. Java-第三章-使用if选择结构实现,如果年龄够7岁或5岁并且是男,可以搬桌子
  5. 石墨烯区块链(4)API
  6. javascript --- 堆栈内存与闭包的作用
  7. 计算机网络(十九)-IEEE802.11无线局域网
  8. 使用.NET System.IO.Pipelines和Kestrel套接字库创建Redis客户端
  9. 通过QXDM锁BAND
  10. Unity 打包对接 XCode 记录
  11. webrtc学习--websocket服务器(二) (web端播放h264)
  12. 《自抗扰控制技术》——第一遍阅读
  13. 服务器的四个网卡虚拟一个网卡,一种物理网卡虚拟成多个虚拟网卡的方法及系统...
  14. 阳谷机器人编程_阳谷实验幼儿园绘本故事《机器人阿泰》
  15. vin端口是什么意思_这些问题你都答不上,还好意思说自己学过网络?
  16. 实战:使用urllib.request爬取猫眼票房数据
  17. 有限状态机(FSM)设计原理
  18. 从今天起,每天写一篇日志,记录我的学习!
  19. 亲身经历灵魂附体与出马仙之说
  20. 第6章第9节:幻灯片背景:使用纹理和图像作为幻灯片的背景 [PowerPoint精美幻灯片实战教程]

热门文章

  1. python之莫斯密码
  2. Android overlay使用
  3. 用友uap nc65开发 二次登陆节点打开控制校验
  4. 宁德畲村赤溪:助乡村振兴,扬民族文化
  5. 四元数quaternion
  6. BOSHIDA博电科技 AC/DC专业电源模块 主要原理与应用
  7. 甘肃“裸条”放贷者被刑拘:背后是一条色情产业链
  8. 计算机右键没有管理命令,为什么我的计算机点击右键后里面没有设备管理器了?...
  9. JSP中out.write()和out.prin…
  10. OFFICE文件碎片恢复