LeetCode 7 整数反转 - 模运算取位

LeetCode 7 整数反转,数学题,模 10 取最后一位,唯一坑点是溢出判断。


🟡 整数反转

32 位有符号整数反转,溢出返回 0。123 → 321-123 → -321120 → 21


思路很直接:每次模 10 取个位数,加到结果末尾(res = res * 10 + digit),原数除以 10。关键在反转后的数可能超过 int 范围(比如 2147483647 反转过来就爆了),Java 里需要在溢出之前提前判断。

java 复制代码
public int reverse(int x) {
    int res = 0;
    while (x != 0) {
        int digit = x % 10;
        // 提前判断下次运算会不会溢出
        if (res > Integer.MAX_VALUE / 10 ||
           (res == Integer.MAX_VALUE / 10 && digit > 7)) return 0;
        if (res < Integer.MIN_VALUE / 10 ||
           (res == Integer.MIN_VALUE / 10 && digit < -8)) return 0;
        res = res * 10 + digit;
        x /= 10;
    }
    return res;
}

为什么是 7 和 -8?Integer.MAX_VALUE = 2147483647(个位是 7),MIN_VALUE = -2147483648(个位是 -8)。在 res*10 之前判断------如果 res 已经大于 MAX/10,乘 10 必定溢出。如果刚好等于 MAX/10,新的个位数 digit 不能超过 7。负数同理。


这道题你踩过什么坑?或者你用别的语言实现过吗?评论区聊聊,回头复习也方便翻。

相关推荐
倒头就睡的小比特1 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼1 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark1 天前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her11 天前
并查集-听课笔记
笔记·算法·并查集
码流子1 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven1 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark1 天前
从算法设计模式看编程思维的抽象能力4
算法
2601_962218611 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法