LeetCode怎么实现整数反转
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要为大家展示了"LeetCode怎么实现整数反转",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"LeetCode怎么实现整数反转"这篇文章吧。一、
千家信息网最后更新 2025年02月04日LeetCode怎么实现整数反转
这篇文章主要为大家展示了"LeetCode怎么实现整数反转",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"LeetCode怎么实现整数反转"这篇文章吧。
一、题目描述(@LeetCode)
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21
如果反转后的整数溢出 32 位 int 范围则返回 0。
二、解题思路
利用取模和取整运算来分离每个位置,然后累加:
123 % 10 = 3:取最低一位 123 / 10 = 12:去掉最低一位 在累加反转数字前要进行溢出检查 INT_MAX = 2^31 - 1 = 2147483647 INT_MIN = -2^31 = -2147483648 如果 rec > 2147483647 / 10 = 214748364,则后面的 rec * 10 必定溢出,比如 2147483650 如果 rec = 2147483647 / 10 = 214748364 且 pop > 7 则后续 rec 刚好不溢出 小于 0 的情况同理
数学方法
class Solution {
public:
int reverse(int x) {
int rec = 0;
int pop = 0;
while (x) {
// 1. 每次取最后一位 123 % 10 = 3
pop = x % 10;
// 2. 去掉最后一位 123 / 10 = 12
x = x / 10;
// 3. rec > 2147483647 / 10 = 214748364 则后续 rec * 10 必定溢出,比如 214748365 * 10
// 4. rec = 2147483647 / 10 = 214748364 且 pop > 7 则后续 rec 刚好不溢出
if ((rec > INT_MAX / 10) || ((rec == INT_MAX / 10) && (pop > 7))) return 0;
// 5. 负数同理
if ((rec < INT_MIN / 10) || ((rec == INT_MIN / 10) && (pop < -8))) return 0;
// 6. 累加 123 = 12 * 10 + 3
rec = rec * 10 + pop;
}
return rec;
}
};
复杂度分析
时间复杂度:O(log(n)) 空间复杂度:O(1)
以上是"LeetCode怎么实现整数反转"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
整数
复杂
内容
复杂度
示例
篇文章
输入
输出
最低
数字
学习
帮助
位置
思路
情况
数学
方法
时间
易懂
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全作文好题目
辽宁哪里学软件开发
数据库应用到哪些技术
智慧乌镇互联网科技成果展示馆
巴克斯兽 数据库
安徽高密度服务器虚拟主机
rustdesk自建服务器视频
服务器够买
kettle免费数据库插件
循环读数据库
神武2020和哪个服务器合区了
找不到内网id服务器ip地址
科技新能源互联网理财
orcla数据库价格
前瞻性数据库是什么意思
服务器机房人员管理制度
上海数据库培训条件
sql数据库安全性课设
代理服务器连接方式来穿透内网
uos 服务器网络设置
斗鱼服务器繁忙
英雄联盟菲律宾服务器简称
数据库优化 系统层面
日本科学技术数据库
癌症在中国的数据库
云数据库服务安全白皮书讲解
sql查询原始数据库排序
软件开发买联想还是mac
网络安全奖项名称
ps3 代理服务器