首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >剑指 Offer 65. 不用加减乘除做加法

剑指 Offer 65. 不用加减乘除做加法

作者头像
杨鹏伟
发布于 2021-05-18 08:21:02
发布于 2021-05-18 08:21:02
31200
代码可运行
举报
文章被收录于专栏:ypwypw
运行总次数:0
代码可运行

刷爆Leetcode剑指offer第一天

思路:见图解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    int add(int a, int b) {
        // 后续用a表示非进位和,b表示进位,当进位为0,则表示计算结束
        return b == 0 ? a : add(a^b, (unsigned int)(a&b) << 1);
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
Michael阿明
2020/07/13
3720
图解LeetCode——剑指 Offer 65. 不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
爪哇缪斯
2023/05/10
1690
图解LeetCode——剑指 Offer 65. 不用加减乘除做加法
剑指offer | 面试题51:不用加减乘除做加法
参考链接:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/solution/mian-shi-ti-65-bu-yong-jia-jian-cheng-chu-zuo-ji-7
千羽
2022/04/12
2820
剑指offer | 面试题51:不用加减乘除做加法
LeetCode-面试题65-不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
benym
2022/07/14
2090
每天一道剑指offer-不用加减乘除做加法
首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到2。 第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。
乔戈里
2019/01/28
3170
剑指Offer(四十八)-- 不使用加减乘除实现加法
这道题不让使用加减乘除,那么我们只能考虑其他的方向,比如位运算,位运算可以巧妙的实现加和的操作。
秦怀杂货店
2022/02/15
4130
剑指Offer(四十八)-- 不使用加减乘除实现加法
不用加减乘除做加法
题意 写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、*、/ 四则运算符号。 样例 对于 num1 = 15, num2 = 17,返回 32。 思路 位运算 首先先来看下十进制是如何计算的: 相加各位的值,不进位,结果是 22, (5 + 7 = 12,舍弃进位就是2, 1 + 1 = 2 没有进位就是 22) 计算进位值,得到 10。 然后将上述两步得到的值重复步骤 1 和 2 。直到进位置为 0,返回不进位的值即可。 那么对于二进制也可以用这种方式计算: 相加各位的值,不进位,15 (11
一份执着✘
2018/06/04
9130
[剑指offer] 不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 解题思路 用位运算来实现。 step1: 进行异或运算,计算两个数各个位置上的相加,不考虑进位; step2: 进行位与运算,然后左移一位,计算进位值; step3: 把异或运算的结果赋给 num1,把进位值赋给 num2,依此循环,进位值为空的时候结束循环,num1就是两数之和。 参考代码 public class Solution { public int Add(int num1, int num2) {
尾尾部落
2018/09/04
1.3K0
不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/ 四则运算符号。 思路:位运算 两个数异或:相当于每一位相加,而不考虑进位; 两个数相与,并左移一位:相当于求得进位; 将上述两步的结果相加 直到没有进位 //相加各位 + 计算进位 //十进制思想 //5+7 各位相加:2 进位:10 //2+10 12 0 //12+0 //二进制计算过程 //5+7 各位相加:101^111=010 进位:101&111=101 (<<1=1010) //2+10 各位相加:0
名字是乱打的
2022/05/13
6370
剑指Offer-不用加减乘除做加法
package Other; /** * 不用加减乘除做加法 * 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 * 思路:位运算 * 1.两个数异或:相当于每一位相加,而不考虑进位; * 2.两个数相与,并左移一位:相当于求得进位; * 3.将上述两步的结果相加 */ public class Solution14 { public static void main(String[] args) { Solution14 soluti
武培轩
2018/04/18
5560
[剑指offer][Java]不用加减乘除做加法
链接:https://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215 来源:牛客网
蛮三刀酱
2019/03/26
6970
不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、*、/ 四则运算符号 解题思路 使用位运算来解题,具体步骤如下: 两个数异或:相当于每一位相加,而不考虑进位 两个数相与,并左移一位:相当于求得进位 将上述两个步骤的结果相加 重复执行上述步骤,直到进位为 0,由于没有进位了,所以此时相加的结果就是最终结果 public class Solution { public int Add(int num1,int num2) { while(num2 != 0) {
全栈程序员站长
2021/04/07
8450
剑指48-不用加减乘除做加法
使用字符指针的特点,例如计算1+2,1的字符指针的第二位为字符3,再将字符转为int
opencode
2022/12/26
1890
AcWing 每日一题春季(十)AcWing 85. 不用加减乘除做加法(位运算)
设要求a+b,记x为a+b无进位答案a^b,a+b进位为(a&b)<<1,但是这题又不能让二者加起来 我们可以循环做 直到第二个操作数为0
glm233
2021/03/24
3470
【剑指offer】48.不用加减乘除做加法
题目要求不能使用加减乘除做加法,那么唯一的办法使用位运算来实现两位数的加法。位运算实现加法的两个主要步骤就是实现两个数无进位加法以及两个数加法中符号进位。其中第一个操作就是异或运算,第二个就是按位与并左移1位,重复上述操作直至符号位为0。
AI那点小事
2020/08/24
3130
不用加减乘除做加法_48
核心思想: 在计组中,半加器、全加器中: 两个二进制的相加结果是用一个异或门实现的; 两个二进制的进位结果是用一个与门来实现的。
名字是乱打的
2021/12/23
2960
【每日算法Day 66】经典面试题:不用四则运算如何做加法?
其实就是用二进制来模拟加法操作。首先将两个数最低位相加,如果都是 ,那么就得到 ,并且进位 ,然后接着算下一位。
godweiyang
2020/03/24
6650
【每日算法Day 66】经典面试题:不用四则运算如何做加法?
不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。 分析: 第一步:不考虑进位对每一位相加。0加0、1加1的结果都是0,0加1,1加0的结果都是1 。注意到,这和异或的结果是一样的。 第二步:进位,对0加0,0加1,1加0而言,都不会产生进位,只有1加1时,会向前产生1个进位。此时我们刻意想象成是两个数先做位与运算,然后再向左移动一位。 第三步:相加的过程依然是重复前面两步,知道不产生进位为止。 如下是一段基于循环实现的参考代码: int Add(int num1, int
猿人谷
2018/01/17
8560
剑指Offer的学习笔记(C#篇)-- 不用加减乘除做加法
这个题目可以让我们回归到小学,想想加法的竖式是怎么写的,哈哈,如果当时你不是那个竖式写错了,是不是就不在3班了?是不是就不会在这里写什么这这这..... 海绵宝宝,这就是人生啊。。
WeiMLing
2019/08/23
3540
剑指Offer的学习笔记(C#篇)-- 不用加减乘除做加法
《剑指offer》– 构建乘积数组、求1+2+3+…+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列
给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]*A[1]*…*A[i-1]*A[i+1]*…*A[n-1]。不能使用除法。
全栈程序员站长
2021/12/23
3850
《剑指offer》– 构建乘积数组、求1+2+3+…+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列
推荐阅读
相关推荐
剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验