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

    科技2024-11-22  24

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

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

    解题思路

    倒推一下 个数为n时 应删除的数字 个数为1:0 个数为2:(0 + m) % 2 个数为3:((0 + m) % 2 + m) % 3 个数为4:(((0 + m) % 2 + m) % 3 + m) % 4

    代码

    class Solution { public int lastRemaining(int n, int m) { int result = 0; for (int i = 2; i <= n; i++) { result = (result + m) % i; } return result; } }
    Processed: 0.009, SQL: 8