LeetCode面试题62.圆圈最后剩下的数【剑指Offer】【易】【Python】【数学】题目是将n个数0,1,,n-1扣成一个圆圈,从数字0开始,每次从圆圈中删除第m个数。找到圆圈中剩下的最后一个数字。例如0、1、2、3、4这5个数字围成一个圈,从数字0开始每次删除第三个数字,删除的前4个数字为2、0、4、1反过来,所以最后剩下的数是3。例子1:输入:n=5,m=3输出:3例子2:输入:n=10,m=17输出:2限制条件:1<=n<=10^51<=m<=10^6Ideas今天的数学笔试正好考了一个类似的题目,其实就是约瑟夫环。直接给出递归公式:$$f(n,m)=\begin{cases}0,\quadn=1\\[f(n-1,m)+m]\%n,\quadn>1\end{cases}$$Python3代码类解决方案:deflastRemaining(self,n:int,m:int)->int:ifn<1orm<1:returnNonelast=0foriinrange(2,n+1):last=(last+m)%i返回lastGitHublinkPython
