第1章|数值与哈希
Unit 01 · LeetCode #9 回文数
不反转整个整数,
只把右半边搬到一面“数字镜子”里。
本题不是在背一个回文判断技巧,而是在训练一种数值状态建模:用 % 10 消费最低位,用 // 10 缩短原数,并让 reversed_half 逐步保存右半部分的镜像。
LeetCode #9|回文数|Palindrome Number
题目
给你一个整数 x。如果 x 是回文整数,返回 true;否则返回 false。回文整数从左向右和从右向左读取都相同。
进阶:不将整数转换为字符串。题面来源:LeetCode #9
示例与约束
输出:true
输出:false
输出:false
-2³¹ ≤ x ≤ 2³¹ - 1
先把前四个环节形成的算法判断翻译成 Python 表达式,再进入真实运行轨迹。
False?reversed_half 应该从什么状态开始?x 搬运最低位?x 当前的最低位接到 reversed_half 的末尾?x 的最低位放进去。reversed_half 中多出来的中间位。x //= 10 是前面已经建立过的“消费最低位”动作,因此不再拆成机械槽位。迁移目标:LeetCode #7 整数反转
不从空白开始写代码。先复用 #9 的数位消费动作,再识别“反转全部数位、保留符号、推入前检查溢出”三个新增任务;随后完成槽位拼接,并用真实运行轨迹验证。
LeetCode #7|整数反转|Reverse Integer
迁移原题
给你一个 32 位有符号整数 x,返回其数字部分反转后的结果。如果反转结果超出 32 位有符号整数范围 [-2³¹, 2³¹-1],返回 0。
假设运行环境不允许存储 64 位整数。
题面来源:LeetCode #7
示例与约束
输出:321
输出:-321
输出:21
-2³¹ ≤ x ≤ 2³¹ - 1
复用的是“数位搬运器”,不是整段答案
digit = x % 10 提取最低位,x //= 10 删除最低位,result = result * 10 + digit 拼接数位。
同样逐位搬运,但不在中点停止,而是处理完全部数位。
相对 #9,新增三项职责
| #9 回文数 | #7 整数反转 |
|---|---|
| 负数直接返回 False | 保存符号,反转数字部分 |
| 只反转右半部分 | 反转全部数位 |
| 最终比较两半 | 返回完整反转值 |
| 不需要输出范围判断 | 每次推入 digit 前检查 32 位上界 |
尚未消费的正数部分,来自 abs(x)。
已经按相反顺序拼好的数位。
记录最终结果应为正还是负。
正数上界 2147483647;负数绝对值上界 2147483648。
将 7 个片段放入正确执行顺序
先点击左侧片段,再点击右侧槽位。槽位拼接用于确认控制流,不要求你直接默写完整函数。
代码片段
执行顺序
先运行拼接结果,再只补 5 个关键表达式
Unit 01 已完成:停留在这里整理你的数位处理 Skill
页面不会自动进入下一题。你可以继续回看任意阶段、重跑迁移轨迹,或手动进入 Unit 02。
Unit 01 Skill:逐位消费 + 半反转状态
题目要求不借助字符串处理整数数位、镜像、反转或进位。
x 保存未处理左半;reversed_half 保存已取出右半的逆序。
每轮开始时,两者共同包含原整数尚未完成比较的全部信息。
负数提前失败;非零末位 0 提前失败;奇数位忽略镜像中的中间位。