题目描述:
题目: 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。
思路分析:
思路分析:这里分享自己觉得比较好的分析----思路分析
最后剩下1个元素X,下标为0,那么该题转化为求有n个元素时,元素X在n个元素中的位置
参考代码:
public int lastRemaining(int n, int m) {
if(n == 0)return -1;//牛客网n=0时,返回-1;
int res = 0;
for(int i = 2; i <= n; i++){
res = ( res + m ) % i;
}
return res;
}
注意:
牛客网n=0时,返回-1