LeetCode算法题:7. 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

提示:

  • -2^31 <= x <= 2^31 - 1

读题后的疑惑点:

  1. Java中的各个数据类型的范围分别是什么,针对这一题中特别研究整数类型的范围。
  2. 如何限制整数的范围为 -2^31 <= x <= 2^31 - 1

解答:

1.Java各数据类型的范围
在这里插入图片描述
在这里插入图片描述
针对该题是int的范围

我的题解思路:

首先判断给定的值是否在-2^31 <= x <= 2^31 - 1范围内,如果不在,则直接返回0,在的话则每次除10取余,将余数再乘以10加上下一位,直到原数变成0。

代码:

class Solution {public int reverse(int x) {if (x<Integer.MIN_VALUE || x>Integer.MAX_VALUE){return 0;}else{int i = x;int a=0;// 用来接收余数int result = 0;while (i!=0){result = result*10 + a;a = i%10;i = i/10;}result = result*10 + a;return result;}}
}

存在bug:
在这里插入图片描述
错误原因,在计算过程中发生了内存泄漏,也就是964632435*10超过了int类型的范围,而不存在检测逻辑导致出错。因此,在每次计算后判断时候正确的计算了,如果计算后的值-a/10不等于上一步的result,则说明内存泄漏,返回0。
修改后的题解:

class Solution {public int reverse(int x) {if (x<Integer.MIN_VALUE || x>Integer.MAX_VALUE){return 0;}else{int i = x;int a=0;// 用来接收余数int result = 0,pre;while (i!=0){pre = result;result = result*10 + a;if ((result - a)/10!=pre) { // 通过还原上一步的值判断是否发生内存泄漏return 0;}a = i%10;i = i/10;}pre = result;result = result*10 + a;if ((result - a)/10!=pre) { return 0;}return result;}}
}

官方题解:

class Solution {public int reverse(int x) {int rev = 0;while (x != 0) {if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {return 0;}int digit = x % 10;x /= 10;rev = rev * 10 + digit;}return rev;}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/reverse-integer/solutions/755611/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

其在判断数组内存泄漏时很聪明的使用了最大和最小的int数值/10与原值判断,这样就不需要再进行复原和存储上一次值的操作,同时它把计算的步骤放在了取余数之前。

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

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

相关文章

iOS--runloop的初步认识

runloop的初步认识 简单认识runloopEvent looprunloop其实就是个对象NSRunloop和CFRunLoopRef的依赖关系runloop与线程runloop moderunloop sourceCFRunLoopSourceCFRunLoopObserverCFRunLoopTimer runloop的实现runloop的获取添加ModeCFRunLoopAddCommonMode 添加Run Loop Sou…

20240506 深度学习高级技术点

1.基于BN层剪枝 基于Batch Normalization (BN)层进行剪枝是一种常用的模型压缩方法&#xff0c;特别是在卷积神经网络(CNNs)中。BN层在训练期间用于加速收敛和提高模型的泛化能力&#xff0c;而在剪枝过程中&#xff0c;BN层提供的统计信息&#xff08;特别是均值(mean)和方差…

【vue-echarts】 报错问题解决 “Error: Component series.pie not exists. Load it first.“

目录 问题描述解决【解决1】【解决2】 问题描述 使用 vue-echarts 时导入的文件 import VChart from vue-echarts/components/ECharts import echarts/lib/chart/line import echarts/lib/chart/bar import echarts/lib/chart/pie import echarts/lib/component/legend impor…

AGI|基于LangChain实现的三种高级RAG检索方法

一、前言 RAG(Retrieval-Augmented Generation)检索增强生成&#xff0c;是现如今基于企业私域知识的问答应用所使用的主流技术之一。相较于重新训练基于私域知识的大模型来说&#xff0c;RAG没有额外的预训练成本&#xff0c;且回答效果与之相当。 但在实际应用场景中&#xf…

虚拟机文件夹共享操作(本地访问)

新建一个文件夹 右击文件夹点击属性 找到共享 点击共享 选择本地用户共享就可以了 本地winr 输入我们图片中的格式&#xff08;IP前加 “\\” &#xff09; 会弹一个窗口&#xff0c;输入虚拟机的入户名和密码就可以共享了&#xff08;一般默认用户名都是administrator&am…

[oeasy]python0015_键盘改造_将esc和capslock对调_hjkl_移动_双手正位

键盘改造 &#x1f94b; 回忆上次内容 上次练习了复制粘贴 按键 作用 <kbd>y</kbd><kbd>y</kbd> 复制光标行代码 到剪贴板 <kbd>p</kbd> 粘贴剪贴板中的内容 <kbd>i</kbd> 切换到 插入模式 <kbd>h</kbd>…

单调栈|84.柱状图中最大的矩形

力扣题目链接 // 版本一 class Solution { public:int largestRectangleArea(vector<int>& heights) {int result 0;stack<int> st;heights.insert(heights.begin(), 0); // 数组头部加入元素0heights.push_back(0); // 数组尾部加入元素0st.push(0);// 第一…

大模型外推能力

一、目录 定义如何提高模型的外推能力&#xff1f;分类测评方法各技术点&#xff0c;以及应用模型&#xff0c;优缺点支持模型长上下文的方案「NTK-aware interpolation」的思路是什么&#xff1f;LLM长度外推方案NTK-by-parts的思路是什么&#xff1f;LLM长度外推方案YaRN是怎…

Xinstall广告效果监测,助力广告主优化投放策略

在移动互联网时代&#xff0c;APP推广已成为企业营销的重要手段。然而&#xff0c;如何衡量推广效果&#xff0c;了解用户来源&#xff0c;优化投放策略&#xff0c;一直是广告主和开发者面临的难题。这时&#xff0c;Xinstall作为国内专业的App全渠道统计服务商&#xff0c;以…

铜价飙升,慧能泰HUSB332F带你狂飙

铜价&#xff0c;近期涨的很飘&#xff0c;涨到怀疑人生。继黄金后&#xff0c;铜成了另一个疯涨的明星&#xff01;作为电线电缆生产不可或缺的原材料&#xff0c;铜的身价暴涨直接拉响了成本警报&#xff0c;压缩了企业的利润空间。众多电线电缆制造商面临着严峻的挑战与考验…

电脑提示“无法定位程序输入点kernel32.dll”怎么解决?分享kernel32.dll丢失的五个修复方法

打开游戏或者软件的时候&#xff0c;电脑提示由于找不到kernel32.dll&#xff0c;无法继续执行此代码怎么办&#xff0c;其实修复起来不难。首先需要先知道怎么是dll文件&#xff0c;dll文件可以简单的把库文件看成一种代码仓库&#xff0c;它提供给使用者一些可以直接拿来用的…

2024抖音小店最新注册流程来了,快快收藏!

大家好&#xff0c;我是电商糖果 2024年想开一家抖音小店&#xff0c;但是不知道具体的开店流程。 不要着急&#xff0c;这篇文章就给大家详细的讲解一下。 首先&#xff0c;准备开店材料&#xff1a;5000左右的类目保证金&#xff0c;电脑&#xff0c;手机号&#xff0c;法…

黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程笔记

HarmonyOS NEXT是纯血鸿蒙&#xff0c;鸿蒙原生应用&#xff0c;彻底摆脱安卓 本课程是基于harmony os4的&#xff0c;与next仅部分api有区别 套件 语言&框架 harmony os design ArkTs 语言 ArkUI 提供各种组件 ArkCompiler 方舟编译器 开发&测试 DevEco Studio 开发…

echarts学习笔记:柱状图+雷达图+双环形图+地图可视化+数据传递关系图+关键词条图+数据总览图+AntV/G2/DataV

GitHub - lgd8981289/imooc-visualization: https://www.bilibili.com/video/BV1yu411E7cm/?vd_source391a8dc379e0da60c77490e3221f097a 课程源码 国内echarts镜像站&#xff1a;ISQQW.COM x ECharts 文档&#xff08;国内同步镜像&#xff09; - 配置项 echarts图表集&…

我独自升级崛起怎么下载 游戏下载教程分享

《我独自升级&#xff1a;崛起》这款游戏核心聚焦于激烈的战斗与角色的持续成长。新加入的玩家首要任务是熟悉基础攻击模式&#xff0c;随后深入探索技能组合策略与连贯招式的艺术&#xff0c;同时掌握防守与躲避技巧&#xff0c;这些都是战斗中不可或缺的关键。随着战斗的持续…

Footprint Analytics 与 Core Chain 达成战略合作

​ 领先的区块链数据解决方案提供商 Footprint Analytics 与比特币驱动、EVM 兼容的 Layer 1 区块链 Core Chain 宣布达成战略合作。此次合作旨在将 Footprint Analytics 的前沿数据解决方案与 Core Chain 的区块链基础设施相结合&#xff0c;共同引领区块链领域的创新发展。 …

LM4562NA 直插DIP8双运放 音频hifi运算放大器

LM4562NA是一款高性能音频运算放大器&#xff0c;其应用领域主要集中在音频和声音处理方面&#xff0c;包括但不限于&#xff1a; 1. 专业录音设备&#xff1a;在录音棚、广播电台和电视台等专业环境中&#xff0c;用于信号放大和处理&#xff0c;确保高质量的声音录制和传输…

Cargo - 管理 rust 依赖包

文章目录 关于 Cargo管理应用创建应用编译运行buildclean 管理依赖添加依赖updatecheck计时 manual rust 安装可参考&#xff1a;https://blog.csdn.net/lovechris00/article/details/124808034 关于 Cargo Cargo 官方文档 &#xff1a; https://doc.rust-lang.org/cargo/crat…

python - rst file to html

文章目录 python - rst file to html概述笔记下载安装PyCharm最新的学习版新建虚拟环境为Conda的工程添加docutils库新建python文件&#xff0c;添加转换代码运行自己写的python文件&#xff0c;执行转换转换结果END python - rst file to html 概述 开源工程中有一个.rst文件…

Terraform数据源

数据源允许查询或计算一些数据以供其他地方使用。 使用数据源可以使得Terraform代码使用在Terraform管理范围之外的一些信息&#xff0c;或者是读取其他Terraform代码保存的状态。 每一种Provider都可以在定义一些资源类型的同时定义一些数据源。 通常来讲&#xff0c;在同一个…