圆圈中最后剩下的数字
class Solution {
public int lastRemaining(int n, int m) {
//模拟法超时
int pos = 0;//长度为1时候安全的下标
//反推的过程
//从i-1个人到i人的安全序号的变化
//正过程:
//1、下标为j+1的成为数组头,j前面的人加在数组尾
//2、删除下标为j的人
//恢复
//1、补充删除的元素
//2、数组下标右移(会越界所以取模)
for(int i=2;i<=n;i++)
pos = (pos+m)%i;
return pos;
}
}
不一样的烟火