Advertisement

登龙课程:LeetCode高级面试题 - 整数翻转

阅读量:

一、题目描述(@LeetCode)

提供一个 32 位的带符号整数,要求将该数值中各个位上的数字顺序进行调换。

示例 1:

  • 输入: 123
  • 输出: 321

示例 2:

  • 输入: -123
  • 输出: -321

示例 3:

  • 输入: 120
  • 输出: 21

若反转后所得数值超出 32 位整数的表示范围,则应返回数值零。

二、解题思路

通过运用取模与取整运算,可将各个位数进行分离,随后执行累加操作:

  • 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,则后续操作不会发生溢出
  • 对于负数情况,处理方式与正数类似

数学方法应用

复制代码
    class Solution {

全部评论 (0)

还没有任何评论哟~