
题目
文字思想:
假设当前待处理数是A。
A%10的结果是A的最低位,A/10的结果是去掉A的最低位。比如123%10 = 3, 123/10 = 12。
结果存放于B,B的初值是0。
①把B扩大10倍后,加上从A的最低位,作为新的B。
②去掉A的最低位后的值作为新的A。
③重复①②,直到A为0。
例子:
当前x = -123
当前r = 0
r扩大10倍 + x的最低位作为新的r = -3
x去掉最低位后作为新的x:-12
当前x = -12
当前r = -3
r扩大10倍 + x的最低位作为新的r = -32
x去掉最低位后作为新的x:-1
当前x = -1
当前r = -32
r扩大10倍 + x的最低位作为新的r = -321
x去掉最低位后作为新的x:0
当前x = 0
当前r = -321
结果:-321
代码:

代码
复杂度:
时间复杂度:O(x的位数),空间复杂度:O(1)。
积累:
- A%10的结果是A的最低位,A/10的结果是去掉A的最低位。
- 整体。
扩展:如果这题传的是一个整型数组
- 在数据结构知识点课程中我们提过,涉及到什么反转就一定要考虑栈、递归,对于顺序表的反转来说一定要想到1与n交换,2与n-1交换, ......。对于链表的反转来说一定要想到头插法。
推荐阅读:LeetCode刷题集合