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条)