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

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


🟡 整数反转

32 位有符号整数反转,溢出返回 0。123 → 321,-123 → -321,120 → 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。负数同理。


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

相关推荐
Nil20811 小时前
leetcode 198打家劫舍
算法·leetcode·职场和发展
Shaoshing12 小时前
前缀和与差分
java·数据结构·算法·前缀和·差分
mmmmath_312 小时前
LeetCode.429.N叉树的层序遍历
数据结构·leetcode
loulanyue_12 小时前
构建房产认知决策智能:Harness底座与AI自进化的技术实践——读贝壳首席算法科学家尹俊希2026云栖专场演讲
人工智能·算法
碧海银沙音频科技研究院12 小时前
基于炬芯ATS录音卡BLE控制协议
人工智能·嵌入式硬件·算法·语音识别
suhan13 小时前
【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
数据结构·后端·算法
姜鱼问生13 小时前
Docker Volume 备份与恢复实战:不停机迁移数据
后端·算法·架构
suhan13 小时前
【数据结构】三、栈和队列:5.顺序队列(循环队列)(初始化,判空判满,入队,出队,实例)
数据结构·后端·算法
suhan13 小时前
【数据结构】三、栈和队列:3.链栈(链栈栈的初始化,判空,进栈,出栈,读取栈顶,链栈实例)
数据结构·后端·算法
大雄很用心13 小时前
如何理解时间复杂度与空间复杂度?| 面试刷题笔记02
算法