13、整数反转
访问
本文共717字。
题目描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
链接:https://leetcode-cn.com/problems/reverse-integer
错误案例
1 | class Solution: |
注:/除法;//除法向下取整。 1423/10=142.3; 1423//10=142
特殊情况
正数取余 % 返回末尾数字,如123%10=3;但负数取余 %,返回[0,9)数字,如-123%10=7。(想得到末尾-3,但是不能单纯的-10)。因为当末尾本身就是0,无论正负返回还是0。如-100%10=0。-10 就错了。
取模:% 返回除法的余数。
当数字<0 and 末尾!=0时,-123%10-10=-3.
1 | class Solution: |
取整。-b去掉末尾数的影响:123//10=12; -123//10=-13(X)。去掉末尾数的影响,(123-3)//10=12; (-123-(-3))//10=-12。即(x-b) // 10
题中还有一个条件:超过 32 位的有符号整数的范围 [−2^31^, 2^31^ − 1] ,就返回 0。于是改进如下:
1 | class Solution: |
但是环境不允许存储 64 位整数(有符号或无符号)。也就是说a已经超过了32位,不能直接存储并和MAX,MIN比较大小。
尽量不要对边界进行加减,以防越界。
1 | class Solution: |
MIN = -2147483648
MAX = 2147483647
只需要比较:前九位。
时间复杂度:O(log|x|)。翻转次数即x十进制的位数。(看不懂…)
空间复杂度:O(1)