题解 | 孩子们的游戏(圆圈中最后剩下的数)

孩子们的游戏(圆圈中最后剩下的数)

https://www.nowcoder.com/practice/f78a359491e64a50bce2d89cff857eb6

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @param m int整型 
     * @return int整型
     */
    int LastRemaining_Solution(int n, int m) {
        // write code here
        int x = 0;
        for(int i = 2; i <= n; ++i){
            x = (x+m)%i;
        }
        return x;
    }
};

首先得理解递归法,然后发现了一个巧合,每次往更深的地方走,但是反向迭代。

我们可以直接心算得到最深的地方的值,然后反向迭代,因为每次使用的参量和公式是一致的,只需要改变一个和迭代有关的变量(链表长度),因此可以使用迭代。

全部评论

相关推荐

点赞 评论 收藏
分享
昨天 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务