leetcode 371. 两整数之和
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. 两整数之和相关推荐
- LeetCode 371. 两整数之和(异或操作) / 639. 解码方法 II(动态规划)/ 437. 路径总和 III
371. 两整数之和 2021.9.26 每日一题 题目描述 给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和. 示例 1: 输入:a = 1, b = 2 ...
- LeetCode 371. 两整数之和(位运算加法)
1. 题目 不使用运算符 + 和 - ,计算两整数 a .b 之和. 示例 1: 输入: a = 1, b = 2 输出: 3示例 2: 输入: a = -2 ...
- leetcode 371. 两整数之和(不用算术运算符实现两个数的加法:按位异或原理)
题目 https://leetcode-cn.com/problems/sum-of-two-integers/ 题解 按位异或:相同为0,不同为1 对于二进制的加法运算,若不考虑进位,则 1+1=0 ...
- 371. 两整数之和
1. 题目 不使用运算符 + 和 - ,计算两整数 a .b 之和. 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = - ...
- LeetCode【位运算】371. 两整数之和
不使用运算符 + 和 - ,计算两整数 a .b 之和. 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = -2, b = ...
- leetcode 371. Sum of Two Integers | 371. 两整数之和(补码运算)
题目 https://leetcode.com/problems/sum-of-two-integers/ 题解 根据 related topics 可知,本题考察二进制运算. 第一次提交的时候,没想 ...
- LeetCode刷题实战371:两整数之和
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- [leetcode]1.两数之和
[leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...
- [hashmap|空间换时间] leetcode 1 两数之和
[hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...
最新文章
- 如何 SQL Server 2005 实例之间传输登录和密码
- java导出excel压缩包_java动态导出excel压缩成zip下载的方法
- 在centos7上编译安装nginx
- Java-第三章-使用if选择结构实现,如果年龄够7岁或5岁并且是男,可以搬桌子
- 石墨烯区块链(4)API
- javascript --- 堆栈内存与闭包的作用
- 计算机网络(十九)-IEEE802.11无线局域网
- 使用.NET System.IO.Pipelines和Kestrel套接字库创建Redis客户端
- 通过QXDM锁BAND
- Unity 打包对接 XCode 记录
- webrtc学习--websocket服务器(二) (web端播放h264)
- 《自抗扰控制技术》——第一遍阅读
- 服务器的四个网卡虚拟一个网卡,一种物理网卡虚拟成多个虚拟网卡的方法及系统...
- 阳谷机器人编程_阳谷实验幼儿园绘本故事《机器人阿泰》
- vin端口是什么意思_这些问题你都答不上,还好意思说自己学过网络?
- 实战:使用urllib.request爬取猫眼票房数据
- 有限状态机(FSM)设计原理
- 从今天起,每天写一篇日志,记录我的学习!
- 亲身经历灵魂附体与出马仙之说
- 第6章第9节:幻灯片背景:使用纹理和图像作为幻灯片的背景 [PowerPoint精美幻灯片实战教程]