[01] 两整数之和
admin
2024-05-02 06:34:53
0

371 两整数之和

    • 题目
        • 给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和。
    • 题解思路
    • 魔鬼细节
        • 细节一
          • 解析
        • 细节二
          • 解析
        • 细节三
          • 解析
        • 细节四
          • 解析
    • 代码
        • 循环写法
        • 递归写法
    • 参考题解

题目

给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和。

示例 1:

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

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

提示:

-1000 <= a, b <= 1000

来源:力扣(LeetCode)
链接: link.

题解思路

利用位运算来解决

魔鬼细节

细节一

a ^ b 表示无进位的求和部分
(a & b) << 1 表示只保留进位部分
所以可以用两部分加起来代替加法,但是不能用"+"实现,转用循环或递归,直到进位 (a & b) << 1 为 0 为止

解析

位运算: & | ^

二进制中: ① 1 + 1 = 10 用 (1 & 1) << 1 or (1 | 1) << 1;
② 1 + 0 = 1 用 1 | 0 or 1 ^ 0
③ 0 + 0 = 0 用 0 & 0 or 0 | 0 or 0 ^ 0

从这里发现 a | b 、 a ^ b 除了不能实现进位,其他都能实现,
但是 a | b 在①中会产生一个小尾巴 1,而 a ^ b 则不会,所以表示无进位的求和
又因为 0 & 上任何数都是 0,所以 (a & b) << 1 才能表示单纯地进位,而 (a | b) << 1 就不行

细节二

用循环或递归,直到进位 (a & b) << 1 为 0 为止

解析

(a & b) << 1 表示的是进位部分,那么随着不断拆分,这部分会变成 0 ,此时 a ^ b 部分就真正表示 a + b 的和了

细节三

可以使用无符号类型来防止溢出。

解析

在 C++ 的实现中,当我们赋给带符号类型一个超出它表示范围的值时,结果是 undefined;而当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模的余数。

细节四

循环写法中,对于语句顺序要把握好

解析

如果先写 a = a ^ b,再写 temp = …,这样就把初始的 a 改变了

代码

循环写法

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

递归写法

class Solution {
public:int getSum(int a, int b) {if(!a) return b;int sum = a ^ b, carry = (unsigned int)(a & b) << 1;return getSum(carry, sum);    }
};

参考题解

官方循环参考
https://leetcode.cn/problems/sum-of-two-integers/solution/liang-zheng-shu-zhi-he-by-leetcode-solut-c1s3/

递归参考
https://leetcode.cn/problems/sum-of-two-integers/solution/liang-zheng-shu-zhi-he-wei-yun-suan-qing-7095/

思路参考
https://leetcode.cn/problems/sum-of-two-integers/solution/javashi-pin-jiang-jie-xi-lie-sum-of-two-integers-b/

相关内容

热门资讯

解密科技赛道超额收益!顶尖基金... 2026年以来A股结构性行情极致演绎,主动权益基金业绩严重分化。数据显示,截至7月3日,主动权益基金...
证券板块为什么是“股市风向标”... 资本市场的长期投资价值对于证券公司的长期投资价值具有显著的正向带动作用。从收入构成中我们能够看到证券...
原创 年... 46% 的 Z 世代、35% 的千禧一代,延后了买房、结婚、生育这些人生重大决策。 听起来有点惨,但...
消息称SambaNova融资1... IT之家 7 月 8 日消息,据彭博社稍早前消息,AI 芯片企业 SambaNova 即将在当地时间...
利好突袭!A股盘中,直线拉升!... 云计算概念股异动! 今日(7月8日),云计算概念股集体拉升,板块指数涨幅超过4%,浪潮信息一字涨停,...
原创 传... 这几年喊了多年的美元霸权衰落,终于不再是空话。美国自己急得团团转,四处找新的货币锚点,还真折腾出几个...
韩国股市跌入技术性熊市,监管紧... 韩国股市正面临今年以来最严峻的考验,基准指数KOSPI从历史高点下跌20%,进入技术性熊市门槛,监管...
原创 美... 网上一直流传着一组扎心数据,即:中国居民可支配收入仅占GDP的比例45%左右,而美国却高达75%以上...
AI休整期不悲观,某些板块底部... 继续普调,严重缩量! 今日沪指跌1.26%、创业板跌0.94%、科创综指跌0.18%; 全天成交额...
知名经济学家高善文去世,曾预判... 出品|搜狐财经 作者|汪梦婷 7月7日,知名经济学家、原国投证券首席经济学家高善文不幸去世,享年55...
20万份文件泄密,苹果被坑惨了 苹果的机密在印度代工厂塔塔电子大面积泄露后,坐不住的不仅是库克,还有新德里的高官们。 当地时间7月2...
起点订购APP贵金属订购交易欺...   互联网上充斥着白银、铂金、铜等现货贵金属投资公司的宣传,通过不实的贵金属现货APP吸引投资者,但...
全新易购APP高额手续费的期货...   全新易购APP白银铂金现货订购出现严重的损失,投资者在这个平台根本赚不到钱,开始还好,后面的交易...
银行板块震荡上扬 中国银行等股... 观点网讯:7月8日,银行板块震荡上扬,中国银行、农业银行、建设银行、成都银行、工商银行等股纷纷上扬。...
AI Agent进入深水区:企... AI Agent从技术概念走向商业落地,企业付费意愿成为检验产品价值的唯一标准。过去两年大量AI创业...
一通智投APP内幕交易欺骗投资...   一通智投APP虚假现货订购交易为非法期货,投资者被宣传广告给诱导,下载了一通智投APP,结果在这...
港股科技股全线大涨!跌多了是基... 港股市场近日整体有明显反弹的科技股今日再度集体走强,恒生科技指数拉升涨超3%。个股中,联想涨超8%,...
一场博览会,看透低空经济风口全... 文丨许佳慧 低空经济风起,谁是真正的弄潮儿? 【观赛道:题材风口开启,全链布局成型】 低空经济有多火...
黄金单边牛市没那么快回来?预测... 黄金这波反弹刚冒头,没人敢直接砸重仓赌方向。Polymarket上的交易显示,黄金7月触及4300美...
超颖电子布局“A+H”:一季度... 瑞财经 吴文婷7月6日,超颖电子发布公告称,为满足公司业务发展需要,深入推进国际化战略,打造国际化资...