首页 > 其他分享 >力扣刷题笔记-07 整数反转

力扣刷题笔记-07 整数反转

时间:2023-10-08 11:59:14浏览次数:35  
标签:10 07 temp 取模 res VALUE 力扣 Integer 刷题

07 整数反转

狗看了都摇头的年纪,纯爱战士一败涂地。

怎么反转

temp用来保存个位数
res用来保存当前结果

  1. 123,取模运算,这样就可以获得最后一位。比如对123%10,得到temp=3.
  2. 判断res是不是溢出(重点
  3. 如果没有溢出,res扩大十倍,再加上个位数,就相当于是反转了。res = res * 10 + temp;
  4. 返回res。

循环条件

while(x!=0)

溢出问题(关键问题)

题目给定的是有符号的整数,长度是32位。就是32个二进制字符表示的数字,比如32个1这样的。
我们并不是判断到最后的结果才能进行的。
在每一趟循环的最后,我们把当前结果乘以10,然后加上前面取模运算得到的原来数字的最后一位,这时候是一次完整的反转。比如:

  1. 123这个数字,取模,得到temp=3, 然后123/10 = 12;
  2. res是0,res = res * 10 + temp = 3;
  3. temp = 12 % 10 = 2; res = res * 10 + temp = 32;
  4. ...
    重复2、3,直到对原来的数字x取模的结果为0为止。
    观察可知,我们在计算res之前就判断是不是溢出,只需要讲Integer.MAX_VALUE / 10即可。
    如果大于,直接返回0,如果等于,要看temp是不是大于7.负数同理。

code

public int reverse(int x) {
        int res = 0;
        while (x != 0) {
            // 取模运算,得到最后一位数字
            int temp = x % 10;
            
            // 去除掉最后一个,个位数字
            x = x/10;
            
            // 判断是不是溢出
            // 因为我们后面还要扩大十倍加上个位数,所以这里判断的是边界值缩小十倍,后面temp大于7是因为最大值的最后一位是7
            if (res > Integer.MAX_VALUE/10 || (res == Integer.MAX_VALUE/10 && temp > 7)){
                return 0;
            }
            
            if (res < Integer.MIN_VALUE/10 || (res == Integer.MIN_VALUE/10 && temp < -8)){
                return 0;
            }
            
            // 自己扩大十倍,再去加上个位数。
            res = res*10 + temp;
        }
        return res;
    }

标签:10,07,temp,取模,res,VALUE,力扣,Integer,刷题
From: https://www.cnblogs.com/Jason-01011010/p/17748521.html

相关文章

  • C# Dx截图初始化报错“SharpDX.SharpDXException: HRESULT: [0x80070057], Module: [G
    最近发现Dx截图创建输出设备时output.QueryInterface<Output1>().DuplicateOutput报错:“SharpDX.SharpDXException:HRESULT:[0x80070057],Module:[General],ApiCode:[E_INVALIDARG/InvalidArguments],Message:参数错误。经过验证,如果一个进程多次创建输出设备(多次调用o......
  • test1007
    写在前面的话不好评价这场比赛。。。\(T1\)简要题意现在有两个点\(P(x_1,y_1),Q(x_2,y_2)\)以及一条直线\(y=k\)。现在姬子要从\(P\)经过直线\(y=k\)之后去找位于\(Q\)的Kiana,问最短路径长度?思路点拨这个问题就是将军饮马问题,不会可以看初中数学书去。#include......
  • 20231007
    //acceptable,finalize,insist,persuade,quote,rate,realistic,reputation,suggest,comparewith,fairoffer,makeanoffer,predatorypricingacceptable-可接受的Acceptablemeanssatisfactoryorsuitabletomeetacertainstandardorrequirement.Itim......
  • 07_逻辑判断
    1.逻辑或与非#连着用root@bk:~#abc=""root@bk:~#[-z$abc]&&echo"空"||echo"非空"空root@bk:~#abc="123"root@bk:~#[-z$abc]&&echo"空"||echo"非空"非空#分开用root@bk:~#[2-......
  • 【刷题笔记】73. Set Matrix Zeroes
    题目Givenan *m* x *n* matrix.Ifanelementis 0,setitsentirerowandcolumnto 0.Doit in-place.Followup:AstraightforwardsolutionusingO(mn)spaceisprobablyabadidea.AsimpleimprovementusesO(m + n)space,butstillnotthebest......
  • 10.07每日总结
    启动mongodb bin/mongod-fsingle/mongod.conf  需要在mongodb路径下连接   bin/mongo--host=192.168.88.151   需要在mongodb路径下关闭服务 客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。mongo--port27017#切换到admi......
  • 21207328-吴义隆-blog1
    一、前言:三次pta题目集知识点丰富,包括了一开始如何创建Java基本形式,接着相关的命名及其使用,以及后面的知识结合。并且三次题目集的题量还算中规中矩,一开始,较为基础,题目多一点,方便学生进行学习和理解;接着进阶一点,难度提升的同时,适当减少了习题量;到最后,基本上题目以第二题的课......
  • LY1371 [ 20231007 NOIP 模拟赛 T0 ] 十一之争
    题意给定一个长度为\(n\)的数字串\(s\)和只包含yo的字符串\(t\),yoimiya会和oimiya玩\(n\)轮游戏,初始有一个数字串\(x\)为\(0\),每次:如果\(t_i\)是y则是yoimiya操作,如果是o则是oimiya操作。每次操作:将\(s_i\)或者\(0\)加入\(x\)的末尾。如果最......
  • 2023-10-07:用go语言,给定n个二维坐标,表示在二维平面的n个点, 坐标为double类型,精度最多
    2023-10-07:用go语言,给定n个二维坐标,表示在二维平面的n个点,坐标为double类型,精度最多小数点后两位,希望在二维平面上画一个圆,圈住其中的k个点,其他的n-k个点都要在圆外。返回一个圆心和半径,表示哪个圆可以圈住其中的k个点。坐标和半径都是double类型,最多保留小数点后两位。下面......
  • 数据库 "test1007" 的 创建 失败。其他信息: 执行 Transact-SQL 语句或批处理时发生
    问题描述在我使用sqlServer登录名和密码验证登录时,出现了创建数据库错误的信息;问题解决只需要在使用Windows身份验证进行登录后,在服务器角色里面找到dbeavor,然后将我们的登录名添加进去,保存之后,重新启动;之后再使用sqlServer验证登录连接之后,就能够建立好数据库啦!......