[LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字相关的知识,希望对你有一定的参考价值。

0,1,···,n-1 这 n 个数字排成一个圆圈,从数字 0 开始,每次从这个圆圈里删除第 m 个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。

例如,0、1、2、3、4 这 5 个数字组成一个圆圈,从数字 0 开始每次删除第 3 个数字,则删除的前 4 个数字依次是 2、0、4、1,因此最后剩下的数字是 3。

示例 1:

输入: n = 5, m = 3
输出: 3

示例 2:

输入: n = 10, m = 17
输出: 2

限制:

1 <= n <= 10^5
1 <= m <= 10^6

思路:

题解:

	/**
     * 剑指 Offer 62. 圆圈中最后剩下的数字
     */
    public int lastRemaining(int n, int m) 
        // f(n) = (f(n−1)+t)%n 
        //      = (f(n−1)+m%n)%n 
        //      = (f(n−1)+m)%n
        int curIndex = 0;
        // 最后一轮剩下 2 个人,所以从 2 开始反推
        for (int i = 2; i <= n; i++) 
        	// (当前 index + m) % 上一轮剩余数字的个数
            curIndex = (curIndex + m) % i;
        
        return curIndex;
    

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof

以上是关于[LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字的主要内容,如果未能解决你的问题,请参考以下文章

剑指OFFER----面试题62. 圆圈中最后剩下的数字

LeetCode 725. 分隔链表 / 326. 3的幂 / 剑指 Offer 62. 圆圈中最后剩下的数字(约瑟夫环问题)

剑指 Offer 62. 圆圈中最后剩下的数字

剑指offer62圆圈中最后剩下的数字

剑指Offer面试题62. 圆圈中最后剩下的数字

剑指 Offer 62. 圆圈中最后剩下的数字-约瑟夫环