LeetCode怎么实现整数反转
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要为大家展示了"LeetCode怎么实现整数反转",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"LeetCode怎么实现整数反转"这篇文章吧。一、
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
手磨咖啡
上海卓越科技互联网
互联网的科技
麻工互联网科技
期待互联网科技
远拓互联网科技
互联网科技小额贷款
狮子座互联网科技培训
宁波青枫互联网科技有限公司
青岛科技大学互联网大赛研究生
和信科技工业互联网
辽宁互联网新科技
开一家科技互联网公司需要多少钱
卓翼科技产业互联网合作
上海京穆互联网科技有限公司
银行科技岗属于互联网吗
浙南科技城互联网大厦招聘
风投北京互联网科技
扫呗互联网科技有限公司
瑞安市蟠桃会互联网科技有限公司
广东猪兼强互联网科技有限公司
广州大一互联网络科技有限公司
中关村互联网科技集团
互联网科技有限公司经营范围
互联网未来科技
佩信高科技互联网
河南猎农互联网科技有限公司
济南有互联网科技公司吗
中和天地互联网科技有限公司
唯美互联网科技