美文网首页
剑指 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