LeetCode 390 消除游戏[数学 归纳法 递归] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 390 消除游戏[数学 归纳法 递归] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
看似很麻烦的一道题目,如果运用数学的归纳法,将会非常简单。说白了就是找规律,但是其中的规律可以证明,证明过程请看阿飞大佬的这篇帖子,假设前向消除为f(n),反向消除为b(n),总结为3点:
- f(n)+b(n)=n+1;
- 当n为1时,f(n)=b(n)=1;
- f(n)=2*b(n/2);
代码如下:
class Solution
public:
int lastRemaining(int n)
return n == 1 ? 1 : 2 * (n / 2 + 1 - lastRemaining(n / 2));
;
以上是关于LeetCode 390 消除游戏[数学 归纳法 递归] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 507. 完美数 / 2022. 将一维数组转变成二维数组 / 390. 消除游戏(等差数列模拟,约瑟夫环)