【LeetCode】Day211-不用加减乘除做加法

2023-11-04

题目

剑指 Offer 65. 不用加减乘除做加法【中等】

题解

不能用加减乘除的题,要考虑位运算

设两数字的二进制形式a,b,s=a+b,a(i)代表a的二进制的第i位,则分为以下四种情况:

a(i) b(i) 无进位和n(i) 进位c(i+1)
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

观察发现,无进位和==异或运算 规律,进位==与运算 规律(需左移一位),因此 n 和 c 的计算公式如下:

n = a ⊕ b n=a \oplus b n=ab,非进位和:异或运算
c = a & b < < 1 c=a \& b<<1 c=a&b<<1,进位:与运算+左移一位

由于 和s=非进位和n + 进位和c,即s=a+b=>s=n+c

循环求n和c,直到进位c=0;此时s=n,返回n即可。举例20+17如下:
在这里插入图片描述

Q:如果a或者b是负数,怎么办?
A:计算机系统中,数值一律用补码来表示和存储
补码的优势:加法、减法可以统一处理(CPU只有加法器)
因此,以上方法同时适用于正数和负数的加法

class Solution {
    public int add(int a, int b) {
        while(b!=0){
            int c=(a&b)<<1;//进位c
            a^=b;//非进位和a
            b=c;//进位b
        }
        return a;
    }
}

时间复杂度: O ( 1 ) O(1) O(1)

空间复杂度: O ( 1 ) O(1) O(1)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【LeetCode】Day211-不用加减乘除做加法 的相关文章

随机推荐

  • VMware虚拟机的配置与Linux的安装

    VMware虚拟机的配置与Linux的安装 在这里使用的是VMware15版本和CentOS 7 x86 64 Minimal VMware虚拟机压缩包以及CentOS 7 x86 64 Minimal需要的点击下载 下面我们进行VMwar
  • tomcat配置通过域名访问,并且不加端口和项目名称

    废话不多说 直接上代码 首先tomcat的路径 打开server xml并在
  • 前端课设 网页设计期末作业-静态网页(下载链接在文末)

    网页设计期末作业 网站详情如下图所示 点我下载 https mp csdn net mp download manage download UpDetailed
  • ch4_7 确认字符串中的重复子串

    leetcod 459 重复的子字符串 给定一个非空的字符串 s 检查是否可以通过由它的一个子串重复多次构成 示例 1 输入 s abab 输出 true 解释 可由子串 ab 重复两次构成 1 关键点分析 使用KMP 中构造出 最大相同前
  • 数据分析利器Jupyter notebook入门手册

    公众号 尤而小屋作者 Peter编辑 Peter 大家好 我是Peter 很多读者问过我 Peter文章中的Python代码都是用的什么编辑器写的 今天就公开啦 Jupyter Notebook 没有Pycharm 没有Vscode 没有S
  • python粘性扩展_1. 使用 C 或 C++ 扩展 Python

    1 12 给扩展模块提供C API 很多扩展模块提供了新的函数和类型供Python使用 但有时扩展模块里的代码也可以被其他扩展模块使用 例如 一个扩展模块可以实现一个类型 collection 看起来是没有顺序的 就像是Python列表类型
  • Linux国际化设置locales

    更新国际话文件时 yan yan laptop var lib locales supported d sudo locale gen Generating locales en AG UTF 8 done en AU UTF 8 done
  • jQuery的筛选器

    jQuery的筛选器 用在jQuery选择的元素集合的后面 都是方法 为了对已经选择出来的元素进行二次筛选 筛选器 1 first gt 筛选集合里面的第一个元素 2 last gt 筛选集合里面的最后一个元素 3 eq n gt 筛选集合
  • openGL之API学习(五十六)低模、高模的区别以及各自的使用领域

    高模是高细节高精度的3D模型 高模看上去十分逼真细节非常丰富模型的面数也相当的高 低模是游戏里的说法 可以理解为游戏所使用的模型 高模有很多作用可以用于电影制作 广告等等 在游戏里高模主要是为了烘焙NormalMap 并且运用在游戏低模型上
  • Antd a-tree 树形控件,选中的节点高亮。

    实现最简单的树展示列表 效果图 template中
  • javaWeb

    1 基本概念 Web开发 静态网页 提供给所有人看的数据始终不会发生变化 动态网页 提供给所有人看的数据始终会发生变化 每个人在不同的时间 不同的地点看到的信息各不相同 在java中 动态Web资源开发的技术统称为javaWeb web应用
  • 脑电信号EEG分类基础入门(1)机器学习编程环境搭建

    网上大多数资料都是基于python语言的 我的编程环境和工程都是python 但也会用matlab来可视化理解 用到的安装包和代码资料已经整理好了 https download csdn net download fzf1996 21484
  • Linux学习笔记:用fdisk工具分区,swap分区的管理

    1 什么是MBR 什么是分割表 MBR master boot record 即硬盘的主引导记录 分割表 partition table 即硬盘的分区表 在系统关机时 硬盘内的磁盘上的磁头会回到整个磁盘的第一个扇区 当再次启动系统时 磁头会
  • ccwow服务器维护,牧师 - 军团再临 - 178魔兽世界

    牧师职业大厅 军团再临资料片中最大的改动便是神器和职业大厅了 如同德拉诺版本的要塞系统一样 7 0的职业大厅便像是一个强化版的要塞 不过在这里你不再是一个人 相同职业的玩家都会和你在一起来共同探索破碎群岛对抗燃烧军团 那让我们走进虚空之光神
  • calico固定podip

    实现方法 利用calico组件的两个kubernetes注解 1 gt cni projectcalico org ipAddrs 2 gt cni projectcalico org ipv4pools 场景1 单个pod固定ip 利用c
  • HttpClient release connection 该放手的时候必须放手

    Apache commons 系列的HttpClient 相信大家都用过 选择它而非JDK 的java net HttpURLConnection 是为了使用HttpClient 封装的几个实用的功能 目前使用最多的版本还是httpclie
  • 腾讯云2022年双11云服务器配置及报价表汇总

    活动直达 点此进入腾讯云2022年双11活动主会场 腾讯云2022年双11活动的既有轻量应用服务器又有云服务器 购买资格分为个人企业同享和企业用户专享 因此 价格表可分为个人企业同享轻量应用服务器 个人企业同享云服务器 企业专享轻量应用服务
  • 618来袭!我用Python脚本实现了淘宝定时自动秒杀,小白也能轻松搞定!

    准备工作 我们需要把秒杀的商品加入购物车 因为脚本点击的是全选 所以不需要的商品要移出购物车 展示篇幅有限 淘宝秒杀程序的完整源代码已经打包好了 需要的朋友可以扫码加v 我分享给你 过程分析 1 打开某宝网站 pq webdriver Ch
  • 基于Fisco的测压工具使用笔记

    基本过程就是这样了 因为当初写的时候是用OneNote写的 复制过来是图片形式 然后主要的坑就是官方的源码有错误 官方也给了修改意见 根据 修改意见 修改源码 修改完我还碰到一个坑 不知道为什么这个位置缺少文件 移动到这个文件下添加solc
  • 【LeetCode】Day211-不用加减乘除做加法

    题目 剑指 Offer 65 不用加减乘除做加法 中等 题解 不能用加减乘除的题 要考虑位运算 设两数字的二进制形式a b s a b a i 代表a的二进制的第i位 则分为以下四种情况 a i b i 无进位和n i 进位c i 1 0