NO.7 整数反转 简单
看到题目的第一个想法:先定义一个保存结果数的变量ans,将参数x不断地对10取余,每次取余将余数加上ans*10,当x=0的时候循环结束,取得最终反转后的数ans。
但是这个想法有个问题就是当“ans10+余数”这个操作时可能会溢出,但庆幸的是检查此操作是否会溢出并不是难事,如果”ans\10+余数“会溢出,那么一定有“ans>=IntMax/10”。
即:参数x为整数 1.“ans>IntMax/10”一定会溢出。2.“ans==IntMax/10”由于IntMax=2^31-1=2147483647,所以此时余数如果大于7也会溢出。 参数x为负数 1.“ans<IntMin/10”一定会溢出。2.“ans==IntMin/10”由于IntMin=-2^31=-2147483648 ,所以此时余数如果小于-8也会溢出。
1 | public int reverse(int x) { |
时间复杂度O(logn)
本人菜鸟,有错误请告知,感激不尽!