有公式= =。。但是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
}
网友评论