剑指offer 73. 不用加减乘除做加法

简介: 剑指offer 73. 不用加减乘除做加法

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。

数据范围

−1000≤num1,num2≤1000


样例

输入:num1 = 1 , num2 = 2
输出:3


方法一:位运算 O(1)


这道题可以总结为下面这个公式:


答案 = 没进位的和 + 进位 答案 = 没进位的和 + 进位答案=没进位的和+进位


这样一看可能会云里雾里的,我们来举个例子,假设 num1 二进制表示为 0 0 1 1 1 0 ,num2 二进制表示为 1 0 1 0 1 1 ,那么两者相加结果如下:


num1 = 0 0 1 1 1 0

num2 = 1 0 1 0 1 1

nums = 1 1 1 0 0 1

但是题目要求不能用到加法,所以我们可以将加法步骤进行拆分,分为没进位的和 sum 以及进位的数 carry :


sum = num1 ^ num2 = 1 0 0 1 0 1

carry = ( num1 & num2 ) << 1 = ( 0 0 1 0 1 0 ) << 1 = 0 1 0 1 0 0

可以发现,我们利用了异或和与运算的性质,可以得到 nums = sum + carry 。但前面说过了,不能用加法运算,所以我们只能将 num1 = sum, num2 = carry :


num1 = sum = 1 0 0 1 0 1

num2 = carry = 0 1 0 1 0 0

然后再重复上述步骤直至 num2 = carry 为 0 即没有进位时,就能得到最终答案即 num1 = sum 。

class Solution {
public:
    int add(int num1, int num2) {
        while (num2)
        {
            int sum = num1 ^ num2;  //没进位和
            int carry = (unsigned int)(num1 & num2) << 1; //进位
            num1 = sum, num2 = carry;
        }
        return num1;
    }
};


欢迎大家在评论区交流~

目录
相关文章
|
人工智能 KVM 云计算
阿里云郑晓:浅谈GPU虚拟化技术(第一章)
本文介绍GPU虚拟化的方方面面
14610 1
阿里云郑晓:浅谈GPU虚拟化技术(第一章)
|
Java easyexcel 测试技术
EasyExcel ——NullPointrtException:null at sun.awt.FontConfiguration
EasyExcel 导出 Excel 文档,在开发机可以正常导出。上了测服之后,导出报空指针。
2651 0
EasyExcel ——NullPointrtException:null at sun.awt.FontConfiguration
|
缓存
IDEA找不到或无法加载主类
IDEA找不到或无法加载主类
4082 0
IDEA找不到或无法加载主类
|
2月前
|
存储 数据采集 人工智能
97_微调基础:全参数 vs LoRA
在2025年的大模型时代,微调技术已经成为将通用大语言模型(LLM)适配到特定领域和任务的核心技术手段。随着模型规模的不断膨胀——从早期的数十亿参数到如今的数千亿甚至万亿参数,如何在有限的计算资源下高效地微调大模型,成为AI工程师面临的关键挑战。本文将深入探讨两种主流的微调方法:全参数微调和LoRA(Low-Rank Adaptation)低秩适应微调,从原理、技术实现、资源需求、性能表现等多个维度进行全面对比分析,帮助读者在实际项目中做出最优的技术选择。
|
2月前
|
供应链 开发者 计算机视觉
淘宝拍立淘接口实战:图像优化、识别调优与避坑代码示例
本文详解淘宝拍立淘接口(taobao.picture.search)实战技巧,涵盖图像预处理、识别优化、签名生成与供应链数据联动,结合代码示例解析高频坑点,如Base64格式错误、限流处理、分页失效等,助开发者提升识别率至85%以上,高效对接电商选品与供应链系统。
|
4月前
|
安全 Linux iOS开发
Tenable Nessus 10.9.3 (macOS, Linux, Windows) - 漏洞评估解决方案
Tenable Nessus 10.9.3 (macOS, Linux, Windows) - 漏洞评估解决方案
484 0
Tenable Nessus 10.9.3 (macOS, Linux, Windows) - 漏洞评估解决方案
|
4月前
|
安全 机器人 数据安全/隐私保护
手机屏幕点击器,屏幕自动点击器,免费连点器(自动点击)【autojs】
完整UI界面:包含坐标录制、执行控制、参数设置等区域 坐标录制功能:实时捕捉屏幕点击位置并记录坐标
|
10月前
|
弹性计算 JSON 安全
阿里云服务器产品评测报告
阿里云服务器安全体检与漏洞修复
|
11月前
|
弹性计算 运维 自然语言处理
Copilot测评报告------终端智能化
作为一名后端开发工程师,我日常需要进行云资源的运维和管理。2025年初,我尝试了阿里云推出的OS Copilot,这款基于大模型的操作系统智能助手支持Alinux、CentOS、Ubuntu等系统,具备自然语言问答、辅助命令执行、系统运维调优等功能。安装过程简单流畅,通过简单的配置即可使用。Copilot不仅能处理复杂指令,还能解释管道命令,极大提升了Linux系统的使用效率。尤其在agent模式下,智能化程度更高,显著减轻了工程师的工作负担。总的来说,Copilot的表现令人惊艳,终端操作从此更加智能便捷。
|
Ubuntu Linux
探险迷宫——在Linux上畅玩Nethack
Nethack是一款经典的命令行角色扮演游戏,它在Linux系统上备受喜爱。在这个游戏中,你将进入一个神秘的地牢,探险、战斗、寻找宝藏,面对各种怪物和陷阱。本文将介绍如何在Linux上安装、运行和玩Nethack,以及一些游戏中的基本策略和技巧。
828 0