7、整数反转-cangjie

题目

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值