【LeetCode】剑指 Offer 65. 不用加减乘除做加法 p310 -- Java Version

news2024/12/30 2:48:19

题目链接:https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/

1. 题目介绍(65. 不用加减乘除做加法)

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

【测试用例】:
>

【条件约束】:
>

2. 题解

2.1 位运算 – O(1) ⭐

时间复杂度O(1),空间复杂度O(1)
在这里插入图片描述

解题思路】:
该题解的思路就是将原本的加法运算,从底层思路出发,将原本的数字相加变为二进制的位数相加,将 原本的 a + b 转化为 n(无进位和) + c(进位),使用循环进行相加,直至进位为0为止,以 a = 1, b = 9 为例,可见下图:
在这里插入图片描述

class Solution {
    // s = a + b = n + c;
    public int add(int a, int b) {
        while (b != 0) {
            int c = (a & b) << 1;
            a ^= b;
            b = c;
        }
        return a;
    }
}

在这里插入图片描述
递归写法

class Solution {
    // s = a + b = n + c;
    public int add(int a, int b) {
        return b == 0 ? a : add(a ^ b, (a & b) << 1);
    }
}

2.2 库函数(Integer.sum() & IntStream)

解题思路】:
我们可以使用具有 sum() 方法的包装类实现数字的相加,但严格意义上 Integer.sum() 写法应该是不被允许的,因为它的底层其实就是两数相加:
在这里插入图片描述
而 IntStream 则不同,它的底层是一个 reduce
在这里插入图片描述

IntStream写法:

class Solution {
    public int add(int a, int b) {
        IntStream intStream = IntStream.of(a,b);
        return intStream.sum();
    }
}

在这里插入图片描述
Integer.sum()写法:

class Solution {
    public int add(int a, int b) {
        return Integer.sum(a,b);
    }
}

在这里插入图片描述

3. 参考资料

[1] 面试题65. 不用加减乘除做加法(位运算,清晰图解)-- Krahets

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

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

相关文章

C语言入门篇——输入输出篇

目录 1、printf()函数 1.1、printf()函数中的标记 1.2、输出最小宽度&#xff08;width&#xff09; 1.3、精度&#xff08;.precision&#xff09; 2、scanf()函数 2.1、scanf(“输入控制符”, 输入参数) 2.2、scanf(“输入控制符非输入控制符”, 输入参数); 2.3、字符…

docker简单教程(二)启动服务,实现简单的网站

docker简单教程&#xff08;二&#xff09;启动服务 文章目录 docker简单教程&#xff08;二&#xff09;启动服务1&#xff1a;创建index.html2&#xff1a;创建Dockerfile3&#xff1a;构建4&#xff1a;启动5&#xff1a;访问6&#xff1a;下一篇将介绍一些常用的操作 这篇我…

Ae 脚本:TypeMonkey 动态文本动画

使用 TypeMonkey 脚本可以快速生成带有摄像机动画的动态文本 Kinetic text效果&#xff0c;简单快捷&#xff0c;无需繁琐的关键帧控制。 经典网络案例&#xff1a;倒鸭子 ◆ ◆ ◆ 使用方法 一般操作流程 新建合成&#xff0c;并确定好合成的持续时间。或者&#xff0c;设置…

句子改写神器-文案自动改写的免费软件

AI改写软件&#xff1a;让你的写作更加轻松高效 现代社会中&#xff0c;写作已经成为了我们各行各业必不可少的一部分。无论是文章、报道、论文还是其他各类文本&#xff0c;都需要花费大量的时间和精力来撰写。而且&#xff0c;在写作过程当中&#xff0c;我们还需要进行反复…

【Java】『蓝桥杯』10道编程题及答案(二)

系列文章 【Java】『蓝桥杯』10道编程题及答案&#xff08;一&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/130223115 【Java】『蓝桥杯』10道编程题及答案&#xff08;二&#xff09; 本文链接&#xff1a;https://blog.csdn.net/y…

Python 代码打造小 AI ,罗列博文笔记总索引列表,自动生成“我的博文笔记总索引”博文 HTML5 源码文本

Python 代码打造小 AI &#xff0c;获取笔记信息&#xff0c;自动阅读量降序编排索引列表&#xff0c;生成 HTML5 源码文本。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&…

依赖自动装配

自动配置 前面花了大量的时间把Spring的注入去学习了下&#xff0c;总结起来就一个字麻烦。 问:麻烦在哪? 答:配置文件的编写配置上。 问:有更简单方式么? 答:有&#xff0c;自动配置 什么是自动配置以及如何实现自动配置&#xff0c;就是接下来要学习的内容&#xf…

English Learning - L2-16 英音地道语音语调 语调 2023.04.20 周四

English Learning - L2-16 英音地道语音语调 语调 2023.04.20 周四 语调降调升调降升升降 语调如何正确的表情达意用降调的句型用升调的句型用降升调的句型升降调 & 平调 回顾词重音句重音弱读语音语调四步法 存档音频 语调 降调 重音音节降 升调 一般表示不确定&#xf…

进制转换—包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

目录 1.进制转换必备知识&#xff1a; 1.1 二进制逢2进1 8进制逢8进1 10进制逢10进1 16进制逢16进1 1.2为了区分二、八、十、十六进制&#xff0c;我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换 2.1 二进制转八进制 2.2 八…

移动电视双天线分集接收技术解决方案

移动电视双天线分集接收技术 随着DVB-T在手机电视、车载电视、楼宇电视、地铁电视等户外广播领域内的发展&#xff0c;在这些接收范围内&#xff0c;多径衰落、多普勒频移等小范围衰落是不可避免的问题&#xff0c;解决这些衰落和干扰成为倍受关注的问题。为了解决衰落&#x…

ROS学习第二十三节——TF坐标变换实操

1.综述 需求描述: 程序启动之初: 产生两只乌龟&#xff0c;中间的乌龟(A) 和 左下乌龟(B), B 会自动运行至A的位置&#xff0c;并且键盘控制时&#xff0c;只是控制 A 的运动&#xff0c;但是 B 可以跟随 A 运行 结果演示: 实现分析: 乌龟跟随实现的核心&#xff0c;是乌龟…

在外Windows远程连接MongoDB数据库【无公网IP】

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章&#xff1a;公网远…

【Pytorch学习笔记】12.修改预训练模型权重参数的方法(用于对单通道灰度图使用预训练模型)

文章目录 1.导出模型参数&#xff0c;修改参数2.修改模型结构&#xff0c;导回参数 我们在训练单通道图像&#xff0c;即灰度图&#xff08;如医学影像数据&#xff09;时&#xff0c;常会使用预训练模型进行训练。 但是一般的预训练模型是以ImageNet数据集预训练的&#xff0c…

OpenAI Embedding:快速实现聊天机器人(四)

theme: orange 本文正在参加「金石计划」 接上文OpenAI Embedding&#xff1a;快速实现聊天机器人(三)如何使用Python实现embedding相似度搜索&#xff0c;这篇文章继续讲如何将搜索到的相似文本进行提炼&#xff0c;并最终得出问题的答案。 提炼文本 通过调用azure openai服务…

数据库基础篇 《10.创建和管理表》

1. 基础知识 1.1 一条数据存储的过程 1.2 标识符命名规则 1.3 MySQL中的数据类型 其中&#xff0c;常用的几类类型介绍如下&#xff1a; 2. 创建和管理数据库 2.1 创建数据库 方式1&#xff1a;创建数据库 CREATE DATABASE 数据库名; 方式2&#xff1a;创建数据库并指…

Netty工作模型——网络IO模型的演进,从BIO到NIO到Reactor模型与Netty工作模型

文章目录 一、IO模型1、BIO&#xff08;同步阻塞&#xff09;2、NIO&#xff08;同步非阻塞&#xff09;3、AIO&#xff08;异步非阻塞&#xff09; 二、Reactor模型1、单Reactor单线程2、单Reactor多线程3、主从Reactor多线程 三、Netty工作模型1、Netty工作模型2、Netty入门案…

【Java】『蓝桥杯』10道编程题及答案(三)

系列文章 【Java】『蓝桥杯』10道编程题及答案&#xff08;一&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/130223115 【Java】『蓝桥杯』10道编程题及答案&#xff08;二&#xff09; 本文链接&#xff1a;https://blog.csdn.net/y…

智能座舱域

bosch对车载系统的划分&#xff0c;通常分为5大域&#xff1a;动力域&#xff0c;底盘域&#xff0c;车身域&#xff0c;智能座舱域和adas自动驾驶域。随着ECU集成中央化的发展趋势&#xff0c;大众&#xff0c;华为等巨头将动力域&#xff0c;底盘域和车身域合并为整车控制域&…

Java中将json字符串导出为json文件【详细步骤】

一、概述 请根据具体需求具体改动&#xff0c;此代码需要将前端的数据查询出来&#xff0c;然后进行json字符串的转化 .getCatalogId(id)方法是根据id查出来的内容然后再进行转换成json字符串 也可以直接传入json字符串进行测试 二、代码 ApiOperation("导出为json文件&q…

fzyczn生日赛t1 CZN

fzy&czn生日赛t1 CZN 膜拜hybb首杀 文章目录 fzy&czn生日赛t1 CZN题目背景题目描述分析my codewnags code 题目 题目背景 有一天&#xff0c;czn在机房里面心心念念的pj终于来找他了&#xff0c;pj希望czn能够帮助她来解决一道数学题&#xff0c;czn“十分不乐意”地…