当前位置:网站首页>LeetCode50天刷题计划(Day 6—— 整数反转 14.20-15.20)
LeetCode50天刷题计划(Day 6—— 整数反转 14.20-15.20)
2022-08-01 14:45:00 【国际知名观众】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
今天的题好简单
一、题目
整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示
-231 <= x <= 231 - 1
二、思路
1.python
没啥难度,输入后和输出前判断两次范围,中间无脑反转字符串就行了
需要注意python切片步长为-1时下标是从后往前算的,其中s【start,end,-1】中,切出[start,end)的序列(已反转),故end是小下标,start是大下标。
2.c++
传统做法应该是数学方法,while循环取模求余依次得到从后往前的每一位(cur=x%10;x=x/10),
对于每一位把他加入结果result中(result=result*10+cur)
需要注意:
① INT_MAX = 2^31-1,INT_MIN= -2^31
②在形成结果的过程中不断判断范围,一旦出现上溢出或下溢出,立即返回0
本题假设环境不允许存储 64 位整数,因此输入不会有溢出,只能是在反转的过程中,在形成result中出现溢出。也就是result*10+num>INT_MAX or result*10+num<INT_MIN;为了在计算前判断,则通过逆运算有:
上溢出条件:
下溢出条件:
③复杂度分析
log(x)相当于取x的位数,因为要遍历x的每一位
空间上只需要原地乘,O(1)
三、代码
1.python
class Solution:
def reverse(self, x: int) -> int:
#计算上下边界
edge=pow(2,31)
down=-edge
up=edge-1
#如果在边界外,返回0
if(x<down or x>up):
return 0
#如果是负数,先将去掉符号的部分转为字符串然后反转然后转为int然后加上符号
if(x<0):
re=-(int(str(x)[:0:-1]))
#正数不用在意负号,直接反转即可
else:
re=int(str(x)[::-1])
#要保证输出的结果也在范围内
if(re<down or re>up):
return 0
else:
return re

2.c++
class Solution {
public:
int reverse(int x) {
//结果
int result=0;
//当前数字
int cur = 0;
//遍历每一位
while(x != 0){
cur = x%10;
x/=10;
if(result>INT_MAX/10 || result == INT_MAX/10 && cur>INT_MAX%10){
return 0;
}
if(result<INT_MIN/10 || result == INT_MIN/10 && cur<INT_MIN%10){
return 0;
}
result = result*10 + cur;
}
return result;
}
};

边栏推荐
- 性能优化——粒子优化笔记
- docker部署mysql并修改其占用内存大小
- Wovent Bio IPO: Annual revenue of 480 million pension fund is a shareholder
- 有限合伙人与普通合伙人的区别
- 游戏元宇宙发展趋势展望分析
- 分布式数据库难题(一):数据分区
- 经纬信息IPO过会:年营收3.5亿 叶肖华控制46.3%股权
- 倪光南:openEuler已达国际同类社区水准
- openEuler 社区完成首批顾问专家聘用,共同为社区的发展贡献力量
- Amperon IPO meeting: annual revenue of 500 million Tongchuang Weiye and China Mobile Innovation are shareholders
猜你喜欢
随机推荐
性能优化——粒子优化笔记
分布式数据库难题(一):数据分区
Range query based on date in MySQL
what is tail tooth feast
[Binary Tree] Path Sum II
重磅!国内首个开放式在线绘图平台Figdraw突破10万用户!发布《奖学金激励计划》:最高5000元!...
E - Red and Blue Graph (Combinatorics)
荣信文化通过注册:年营收3.8亿 王艺桦夫妇为实控人
Could not write header for output file #0 (incorrect codec parameters ?): ……
datetime64[ns]转化为datetime
利用UIRecorder做页面元素巡检
经纬信息IPO过会:年营收3.5亿 叶肖华控制46.3%股权
SyntaxHighlighter带来的字符转义问题
JSON数据转换总结(VIP典藏版)
Arduino无线下载 Arduino USB接口无线自动下载程序
有谁知道pg12.5版本的数据库驱动在哪里能找到么?
Stored procedures in MySQL (detailed)
The little thing about Request reuse.The research is understood, and I will report it to you.
倪光南:openEuler已达国际同类社区水准
阿里巴巴测试开发岗P6面试题






![[Binary Tree] Path Sum II](/img/ed/741b213f620f19975bdb479de015b1.png)


