【力扣】整数反转,判断是否溢出的数学解法

整数反转原题地址

方法一:数学

反转整数

如何反转一个整数呢?考虑整数操作的3个技巧:

  1. xmod10可以取出x的最低位,如x=123,xmod10=3。
  2. x/=10可以去掉x的最低位,如x=123,x/=10,x=12。
  3. x=x*10+y可以在x后面续上y,其中y是一位数,如x=123,y=4,x=x*10+y,x=1234。

假设要反转的整数为x,反转后的整数存储在变量rev中,rev一开始初始化为0,那么反复执行以下操作:

  1. digit=xmod10,取出x的最低位数。
  2. x/=10,去掉x的最低位数。
  3. rev=rev*10+digit,在rev后面续上digit。

直到x为0为止,此时rev存储的数据符合题目要求。

判断溢出

问题在于,如何判断插入后的数据是否超出[INT_MIN,INT_MAX]的范围,导致溢出?

我们来探索不等式INT\_MIN\leqslant n\leqslant INT\_MAX成立的充分必要条件。

先看右半边,即n\leqslant INT\_MAX

对于任意整数i,我们有i=\left \lfloor \frac{i}{10} \right \rfloor\times 10+i mod 10,如对于123,123/10=12,123mod10=3,123=12*10+3。

不等式化为:\left \lfloor \frac{n}{10} \right \rfloor\times 10+n mod 10=\left \lfloor \frac{INT\_MAX}{10} \right \rfloor\times 10+INT\_MAX mod 10,带入INT\_MAXmod10=7\left \lfloor \frac{n}{10} \right \rfloor=revnmod10=digit0\leqslant digit\leqslant 9

移项化简得:(rev-\left \lfloor \frac{INT\_MAX}{10} \right \rfloor)\times 10\leqslant 7-digit,记\left \lfloor \frac{INT\_MAX}{10} \right \rfloor=m

  1. 当rev=m时,如果还要推入数字,那么digit≤2,因为INT_MAX的最高位为2,此时不等式左边等于0,右边为正数,不等式恒成立。
  2. 当rev>m时,不等式左边至少是10,右边至多是7,不等式恒不成立。
  3. 当rev<m时,不等式左边至多是-10,右边至少是7-9=-2,不等式恒成立。

所以原不等式右半边成立的充分必要条件是rev\leqslant m,即rev\leqslant\left \lfloor \frac{INT\_MAX}{10} \right \rfloor。同理左半边成立的充分必要条件是rev\geqslant \left \lceil \frac{INT\_MIN}{10} \right \rceil

原不等式成立的充分必要条件是\left \lceil \frac{INT\_MIN}{10} \right \rceil\leqslant rev\leqslant\left \lfloor \frac{INT\_MAX}{10} \right \rfloor

// 方法一:数学
class Solution {
public:int reverse(int x) {int rev = 0;while (x){if (rev < INT_MIN / 10 || rev > INT_MAX / 10){return 0;}// rev后面续上x的最低位rev = rev * 10 + x % 10;// 去掉x的最低位x /= 10;}return rev;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Pyhton4Delpi】学习笔记(二)安装验证篇

D12环境下安装P4D。 一、下载 Python4Delphi&#xff08;下称P4D&#xff09;: 下载地址&#xff1a;https://github.com/pyscripter/python4delphi 下载或者克隆P4D到指定的目录&#xff0c;例如&#xff1a;MDS_New&#xff0c;目录结构如下&#xff0c;P4D就是克隆下来的…

Msql-数据库死锁

实验案例 CREATE TABLE t1_deadlock ( id int(11) NOT NULL, name varchar(100) DEFAULT NULL, age int(11) NOT NULL, address varchar(255) DEFAULT NULL, PRIMARY KEY (id), KEY idx_age (age) USING BTREE, KEY idx_name (name) USING BTREE ) ENGINEInnoDB DEFAULT CHARS…

C语言之找单身狗

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a; 我要学编程(ಥ_ಥ)-CSDN博客 题目&#xff1a; 在一个整型数组中&#xff0c;只有一个数字出现一次&#xff0c;其他数组都是成对出现的&#xff0c;请找出那个只出现一次的数字。…

基于微信小程序的医保行政执法案件管理系统

本系统设计的是一个医保行政执法的网站&#xff0c;此网站使用户实现了不需出门就可以在手机或电脑前进行网上查询需求信息等。 用户在注册登陆后&#xff0c;在客户端可以实现&#xff1b;案件信息、结案归档、我的等。然而管理员则可以在服务端直接管理&#xff1b;个人中心、…

H12-821_28

28.如图所示,在一个纯IPv6环境中,若想实现PC1与PC2之间的通信,下列哪组地址可以分别配置在PC1与P2上 A.2001:FDC:1/64 2001:FDC::2/64 B.2001:FDC::1/64 2001:FDC1::2/64 C.FD00:1AC0:872E::1/64 FD00:2BE1:2320::1/64 D.FE80::1/64 FE80::2/64 答案&#xff1a;B 注释&…

少儿编程考级:智慧启迪还是智商税?

在当前科技日新月异的时代背景下&#xff0c;少儿编程教育日益受到家长和社会的广泛关注。与此同时&#xff0c;各类少儿编程考级应运而生&#xff0c;引发了公众对于其价值和意义的深度探讨。一部分人认为这是对孩子逻辑思维与创新能力的有效锻炼&#xff0c;是智慧启迪的重要…

深入解析Elasticsearch的内存架构与管理

在当今数据驱动的世界中&#xff0c;高效、快速地处理和搜索大量数据成为了许多应用的核心需求。Elasticsearch&#xff0c;作为一款功能强大的开源搜索和分析引擎&#xff0c;通过其独特的内存架构和管理策略&#xff0c;实现了对大规模数据集的快速索引和查询。本文将深入解析…

推理系统学习笔记

一些学习资料 最近对MLsys比较感兴趣&#xff0c;遂找些资料开始学习一下 https://fazzie-key.cool/2023/02/21/MLsys/https://qiankunli.github.io/2023/12/16/llm_inference.htmlhttps://dlsyscourse.orghttps://github.com/chenzomi12/DeepLearningSystem/tree/main/04Infe…

最详细PE文件格式讲解(完结篇)

前提情要&#xff1a;各位小伙伴是否已经熟练掌握前半部分知识点&#xff0c;各位可以找一下相关练习&#xff0c;或者等待我下面会发布的代码实践进行练习&#xff0c;如果一切ok&#xff0c;那我们将开始下半部分学习&#xff08;good&#xff09;。 如果还没有看&#xff0c…

【学习笔记】TypeScript学习笔记1 --TypeScript中的类型

文章目录 TS总的变量类型References TS总的变量类型 备注&#xff1a; 如果一个变量设置为了any 类型之后相当于变量关闭了TS的类型检测 let d: any; d 10; d hello;//unknown表示的是未知类型&#xff0c;实际是上一个安全的any,unknown类型的变量不能直接赋值给其他变量le…

docker部署docker运维工具

简介 主要功能:管理容器,管理镜像,管理容器网络 安装 拉取镜像 docker pull joinsunsoft/docker.ui:1.0.1 启动容器 docker run -d --name docker.ui --restart always -v /var/run/docker.sock:/var/run/docker.sock -p 10039:8999 joinsunsoft/docker.ui:1.0.1 使用 打…

汇集全球50+供应链领域企业专家,创新论坛带来最新趋势和实践

过去的几年中&#xff0c;随着世界范围内经济、社会和政治上的巨大变化&#xff0c;供应链管理已成为企业和经济成功的关键因素。面对不断增长的全球挑战&#xff0c;包括经济波动、技术变革、政治不确定性&#xff0c;以及环境可持续性的压力&#xff0c;构建一个创新、高效且…