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

it2024-05-12  45

1.题目

https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/

2.分析

每杀掉一个人,其实就是把这个数组向前移动了M位。然后逆过来,就可以得到这个递推式。 约瑟夫环

3.代码

class Solution { public int lastRemaining(int n, int m) { int k=0;//一个人的时候,胜利者是下标为0的人 //i+1个人时 for(int i=1;i<n;i++){ k=(k+m)%(i+1); } //模上当前人数,防止数组越界 return k; } }

4.复杂度

时间复杂度:O(N) 空间复杂度:O(1)

5.结果

最新回复(0)