
Github:Leetcode-7. Reverse Integer(代码实现)
题目Leetcode-7. Reverse Integer
Leetcode-7. 整数反转
题目含义将整数进行反转,注意正负符号位不变。
算法思路【迭代】
1、例如 12345 的反转如上图,每次整数的求余等于反转整数的尾数;
2、res * 10 + 反转整数 等于 当前位反转后的反转数;
3、通过 1,2 不断迭代,可以得到整数最终的反转数;
4、注意正负号位标识,对于数的符号反转后要保持不变;
5、注意反转后数组的移出,题目要求的范围 x 是 -231 <= x <= 231 - 1,可以通过 Long 接收反转
后的整数,结果与 Integer 比,如果超过范围,返回 0 即可;
算法代码package com.jpeony.leetcode.n0007;
public class N7_ReverseInteger {
private static int reverse(int x) {
// 返回值
long res = 0;
// 符号位
int flag = 1;
if (x < 0) {
flag = -1;
}
// 绝对值
x = Math.abs(x);
// 反转
while (x != 0) {
int cur = x % 10;
res = res * 10 + cur;
x = x / 10;
}
// 符号位恢复
res = res * flag;
// 超过 Integer 值范围,返回 0,否则,返回反转后的整数
return res > Integer.MAX_VALUE || res < Integer.MIN_VALUE ? 0 : (int) res;
}
public static void main(String[] args) {
int x = 123;
int reverse = reverse(x);
System.out.println("reverse = " + reverse);
}
}
复杂度分析
时间复杂度:O(k)。k 为 x 的位数,即迭代次数为 k 次,所以时间复杂度为 O(k)。
空间复杂度:O(1)。只是用了临时变量空间,并没有别的渐进增长空间,所以空间复杂度为
O(1)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)