LeetCode 390 消除游戏[数学 归纳法 递归] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 390 消除游戏[数学 归纳法 递归] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
看似很麻烦的一道题目,如果运用数学的归纳法,将会非常简单。说白了就是找规律,但是其中的规律可以证明,证明过程请看阿飞大佬的这篇帖子,假设前向消除为f(n),反向消除为b(n),总结为3点:

  1. f(n)+b(n)=n+1;
  2. 当n为1时,f(n)=b(n)=1;
  3. 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之路的主要内容,如果未能解决你的问题,请参考以下文章

390. 消除游戏

LeetCode 507. 完美数 / 2022. 将一维数组转变成二维数组 / 390. 消除游戏(等差数列模拟,约瑟夫环)

java 390.消除游戏(#)。java

390. 消除游戏

390 Elimination Game 淘汰游戏

《LeetCode之每日一题》:254.消除游戏