题目
思路
官方题解的思路
代码
class Solution {
func reverse(x: Int64): Int64 {
var 正数 = x >= 0
var x_cp = 0
if(正数){
x_cp = x
}
else{
x_cp = 0-x
}
var ans:Int64 = 0
// Int32.max
// println(Int32.Max)
let cmpNum = Int64(Int32.Max)
// println(cmpNum)
while(x_cp > 0){
let tail = x_cp % 10
x_cp /= 10
if(ans <= cmpNum){
ans += tail
ans *= 10
}
else{
// println(ans)
return 0
}
}
if(正数){
return ans / 10
}
else{
return (0-ans/10)
}
}
}
复杂度
时间复杂度
-
循环次数:代码中的
while(x_cp > 0)
循环会根据x_cp
的位数执行。对于一个整数x
,它的位数为O(log(x))
,因此循环的时间复杂度为O(log(x))
。 -
其他操作:循环内部的操作,如取模和除法,都是常数时间操作。
因此,时间复杂度为:O(log(x))
空间复杂度
-
变量存储:代码中使用的变量包括
正数
,x_cp
,ans
和tail
,这些都是常数空间的占用。 -
没有额外的数组或数据结构。
因此,空间复杂度为:O(1)
遇到的坑
渐入佳境了家人们,
仓颉类型极值是以TYPE.Max或者TYPE.Min来表示的