美文网首页
剑指 Offer 62. 圆圈中最后剩下的数字

剑指 Offer 62. 圆圈中最后剩下的数字

作者: 邦_ | 来源:发表于2022-07-29 14:29 被阅读0次

有公式= =。。但是n == 1的时候返回0?


func lastRemaining(_ n: Int, _ m: Int) -> Int {

        if n == 1 {
            return 0
        }
        return (lastRemaining(n - 1, m) + m) % n
    }

三目运算符的


 func lastRemaining(_ n: Int, _ m: Int) -> Int {
        return  n == 1 ? 0 :  (lastRemaining(n - 1, m) + m) % n
    }

非递归 自上而下的内存消耗比较低。。


   func lastRemaining(_ n: Int, _ m: Int) -> Int {

        var i = 1 , res = 0
        while true {
            i += 1
            res = (res + m) % i
            if n == i {
                break
            }
    
        }
        return res
    }








相关文章

网友评论

      本文标题:剑指 Offer 62. 圆圈中最后剩下的数字

      本文链接:https://www.haomeiwen.com/subject/jcruirtx.html