题目

7、整数反转

思路

官方题解的思路

代码

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

复杂度

时间复杂度

  1. 循环次数:代码中的 while(x_cp > 0) 循环会根据 x_cp 的位数执行。对于一个整数 x,它的位数为 O(log(x)),因此循环的时间复杂度为 O(log(x))

  2. 其他操作:循环内部的操作,如取模和除法,都是常数时间操作。

因此,时间复杂度为:O(log(x))

空间复杂度

  1. 变量存储:代码中使用的变量包括 正数x_cpanstail,这些都是常数空间的占用。

  2. 没有额外的数组或数据结构

因此,空间复杂度为:O(1)

遇到的坑

渐入佳境了家人们,
仓颉类型极值是以TYPE.Max或者TYPE.Min来表示的

结果

cangjie

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐