【复试上机】LeetCode刷题-简单-2.Reverse Integer

题目

文字思想:

假设当前待处理数是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)。

积累:

  1. A%10的结果是A的最低位,A/10的结果是去掉A的最低位。
  2. 整体。

扩展:如果这题传的是一个整型数组

  1. 在数据结构知识点课程中我们提过,涉及到什么反转就一定要考虑栈、递归,对于顺序表的反转来说一定要想到1与n交换,2与n-1交换, ......。对于链表的反转来说一定要想到头插法。

推荐阅读:LeetCode刷题集合

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容