LeetCode题练习与总结:两整数之和--371

一、题目描述

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

示例 1:

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

示例 2:

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

提示:

  • -1000 <= a, b <= 1000

二、解题思路

这个问题可以通过位运算来解决。位运算中的“与”操作(&)和“异或”操作(^)可以帮助我们实现加法。以下是解题步骤:

  1. 使用“异或”操作(^)计算不带进位的和。异或操作可以理解为不考虑进位的加法操作。
  2. 使用“与”操作(&)然后左移一位(<<)计算进位。如果两个位都是1,那么就会产生进位。
  3. 将不带进位的和与进位相加,重复步骤1和步骤2,直到没有进位为止。
  4. 当进位为0时,不带进位的和就是最终结果。

三、具体代码

class Solution {public int getSum(int a, int b) {while (b != 0) {// 计算不带进位的和int temp = a ^ b;// 计算进位b = (a & b) << 1;// 将不带进位的和赋值给a,用于下一轮计算a = temp;}// 当没有进位时,a就是最终结果return a;}
}

这段代码通过循环不断地计算不带进位的和以及进位,直到没有进位为止,最后返回的结果即为两数之和。

四、时间复杂度和空间复杂度

1. 时间复杂度
  • 该算法包含一个循环,循环的次数取决于进位(b)的次数。
  • 在最坏的情况下,如果 a 和 b 都是最大值(例如 1000),进位可能会发生多次,但是因为 b 是在每次迭代中被更新为进位后的值,所以进位发生的次数是有限的。
  • 每一次循环都会至少减少一个进位(即 b 中的一个最高位的1),因此循环次数最多为 a 和 b 中最高位1的位置数,这个数字通常远小于 a 和 b 的位数。
  • 假设 a 和 b 都是 32 位整数,那么循环最多执行 32 次(即每个位上都有进位)。

因此,时间复杂度是 O(1),因为循环的次数是常数级别的,不随输入规模变化。

2. 空间复杂度
  • 该算法只使用了固定数量的额外空间,即 temp 变量和 b 的更新值。
  • 这些变量都是整数类型,占用的空间是常数级别的。

因此,空间复杂度也是 O(1),因为无论输入规模如何,算法使用的额外空间都不会改变。

五、总结知识点

  • 位运算符

    • 异或运算符(^):用于计算不带进位的和。如果两个位不相同,则结果为1;如果相同,则结果为0。
    • 与运算符(&):用于找出哪些位会进位。如果两个位都是1,则结果为1,表示需要进位;否则结果为0。
    • 左移运算符(<<):用于将进位左移一位,以便在下一次迭代中加到不带进位的和上。
  • 循环控制

    • while循环:用于重复执行位运算操作,直到没有进位为止(即 b 等于0)。
  • 整数类型

    • 使用 int 类型来存储整数,这是Java中的基本数据类型之一,用于表示32位的有符号整数。
  • 变量赋值

    • 使用赋值运算符(=)来更新变量 a 和 b 的值。
  • 逻辑运算

    • 使用 != 运算符来检查 b 是否不等于0,这是循环的继续条件。
  • 函数返回值

    • 使用 return 语句来返回最终的计算结果。
  • 算法思想

    • 使用位运算来模拟加法操作,这是解决不使用加号实现加法问题的核心思想。

以上就是解决这个问题的详细步骤,希望能够为各位提供启发和帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/7758.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

原型设计软件Axure RP 11 现已发布,更快、更实用的原型设计丨附下载

Axure RP是一套专门为网站或应用程序所设计的快速原型设计工具&#xff0c; 可以让应用网站策划人员或网站功能界面设计师更加快速方便的建立Web AP和Website的线框图、流程图、原型和规格。Axure RP 11&#xff08;下载试用&#xff09; 现已发布&#xff0c;更快、更实用的原…

数据结构-IndexTree结构解析(一)

1.IndexTree IndexTree解决的问题是什么呢&#xff1f;可以从求前缀和入手这个问题。 1.1前缀和数组 简单封装一个前缀和数组&#xff1a; package com.xinghai.arr;import java.util.Arrays;/*** 前缀和数组*/ public class PrefixSumArr {// 存储前缀和数据private int[] p…

外汇EA如何进行历史数据回测?

很多人在下载EA后&#xff0c;直接将其投入实盘交易&#xff0c;而忽略了EA策略的优缺点以及其历史表现。尽管外汇平台提供的历史数据可能不完全准确&#xff0c;但为了确保资金安全和了解EA的真实效果&#xff0c;强烈建议在实盘交易前&#xff0c;先进行充分的历史回测。通过…

聚观早报 | 一加Ace5配置细节曝光;OpenAI重启机器人团队

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 11月7日消息 一加Ace5配置细节曝光 OpenAI重启机器人团队 红魔10 Pro首发搭载悟空屏 华为MatePad 11.5正式发布 …

天融信运维审计系统 download 任意文件读取漏洞复现

0x01 产品描述&#xff1a; 天融信运维审计系统&#xff08;TopSAG&#xff09;是基于自主知识产权的NGTOS安全操作系统平台和多年网络安全防护经验积累研发而成&#xff0c;以4A管理理念为基础、安全代理为核心&#xff0c;提供事前预防、事中监控、事后审计的全方位运维安全解…

centos7安装java

1、首先从官网下载linux的java安装包 2、解压 tar -zxvf jdk-8u231-linux-x64.tar.gz3、修改配置文件 vim /etc/profile添加环境变量 保存后退出 4、刷新配置文件 source /etc/profile

变压吸附制氧设备的型号解析

变压吸附制氧设备(PSA制氧设备)是一种能够在常温常压条件下&#xff0c;利用PSA专用分子筛选择性吸附空气中的氮气、二氧化碳和水等杂质&#xff0c;从而取得纯度较高的氧气(一般为93%2)的设备。关于变压吸附制氧设备的型号&#xff0c;由于市场上存在众多品牌和制造商&#xf…

创新材料科技:铜冷却壁助力高炉节能降耗

高炉用铜冷却壁是高炉内部的一种构件&#xff0c;通常用于高炉的炉身部分。它的主要功能是在高炉冶炼过程中冷却炉壁&#xff0c;以防止炉壁过热。铜冷却壁通常由铜制成&#xff0c;因为铜具有良好的导热性和耐腐蚀性&#xff0c;能够有效地将热量从高炉内部传导到外部&#xf…

【数据集】【YOLO】【目标检测】电动车佩戴头盔检测数据集 5448 张,YOLO/VOC格式标注!

数据集介绍 【数据集】电动车头盔检测数据集 5448 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。数据集中包含3种分类&#xff0c;包含两轮电动车、戴头盔、不戴头盔。数据集来自国内外监控摄像头截图。检测范围电动车、摩托车、双轮非自行车。 一、数据概述 佩戴…

VBA11-row和rows的区别

一、row row返回单元格所在的行号&#xff1b; 如果是区域&#xff0c;就返回这个区域的首行的行号。 示例&#xff1a; 二、rows rows代表行的集合&#xff0c;返回range对象。 示例&#xff1a; Sub rowsTest02() 所有的行都会被选中Rows.Select第一行被选中Sheets(1).…

互联网技术人表达力提升:3个珍藏方法,快速见效!

在技术的世界中&#xff0c;逻辑是至高无上的法则&#xff1b;而在现实中&#xff0c;表达力则是成功的关键。 互联网技术人员在与他人沟通时&#xff0c;常常听到被戏称为“说人话”或“听不懂”。这种现象反映出他们在表达中使用了过多的技术术语和专业痕迹&#xff0c;而又缺…

【canal 中间件】canal 常见的启动方式

文章目录 一、安装 canal-admin1.1 拉取镜像1.2 启动 canal-admin 容器(使用脚本)1.2.1 下载脚本1.2.2 执行脚本1.2.3 初始化元数据库(可选) 1.3 启动 canal-admin 容器(直接使用 Docker 命令)1.3.1 启动容器1.3.2 查看启动日志 1.4 访问页面 二、 安装 canal-server2.1 拉取镜…

AIDOVECL数据集:包含超过15000张AI生成的车辆图像数据集,目的解决旨在解决眼水平分类和定位问题。

2024-11-01&#xff0c;由伊利诺伊大学厄巴纳-香槟分校的研究团队创建的AIDOVECL数据集&#xff0c;通过AI生成的车辆图像&#xff0c;显著减少了手动标注工作&#xff0c;为自动驾驶、城市规划和环境监测等领域提供了丰富的眼水平车辆图像资源。 数据集地址&#xff1a;AIDOV…

React 前端通过组件实现 “下载 Excel模板” 和 “上传 Excel 文件读取内容生成对象数组”

文章目录 一、Excel 模板下载01、代码示例 二、Excel 文件上传01、文件展示02、示例代码03、前端样式展示04、数据结果展示 三、完整代码 本文的业务需求是建立在批量导入数据的情况下&#xff0c;普通组件只能少量导入&#xff0c;数据较多的情况都会选择 Excel 数据导入&…

二、初识C语言(2)

1.修正 VS 下"scanf"的警告 VS-2010中调用scanf&#xff0c;会出现以下警告&#xff1a; 1>e:\c\projects\test\test\test.c(6): warning C4996: scanf: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use …

使用swagger3.0踩过的坑

1.出现这个错误&#xff1a; 原因是&#xff1a; 改成&#xff1a; 就可以了 2.参数框框里面输入不了值 点击try it out &#xff0c;就可以输入了

产品的四个生命周期,产品经理需深刻理解

在产品管理的世界里&#xff0c;产品就像有生命的个体&#xff0c;经历着从诞生到消亡的过程。作为产品经理&#xff0c;深刻理解产品的四个生命周期 —— 引入期、成长期、成熟期和衰退期&#xff0c;是打造成功产品的关键。 引入期&#xff1a;破局的起点 对于 B 端产品而言&…

基于ADC12DJ5200 采样率10.4GS/s的AD子卡设计方案

FMC AD 子卡 12bit 2 通道 5.2GS/s 或单通道 10.4GS/s&#xff0c;是一款高分辨率、高采样率 ADC FMC 子板。它提 供 2 路 12 位 5.2GS/s 或 1 路 10.4GS/s 的 A/D 通 道 &#xff0c; 全功率模拟 -3dB 输入带宽可达 8GHz。本产品是基于 TI 公司ADC12DJ5200 模数转换芯片而设计…

SAP ABAP开发学习——WDA 六 控件与上下文数据编程

目录 控制器就是一个class 钩子方法&#xff08;hook method&#xff09; 组件控制器的hookmethod 普通方法的三种类型 控制器的属性 对参照使用的控制器的引用 访问数据节点 访问节点中的元素 小结1 访问单个节点的属性 取得集合中所有节点的属性 更改单个节点属性…

一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…