题目描述:
0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。
例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。
解题思路:动态规划
根据状态转移方程的递推特性,无需建立状态列表 dp ,而使用一个变量 x 执行状态转移即可。
class Solution{ public int lastRemaining(int n,int m){ int x=0; for(int i=2;i<=n;i++){ x=(x+m)%i; } return x; } }
标签:数字,删除,Offer,int,剩下,约瑟夫,62,圆圈 From: https://www.cnblogs.com/zhz123567/p/17445193.html