题目描述
0,1,…,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
练习地址
实现
方法:递归,时间O(n),空间O(1)
n=1 f(n,m) = 0,
n>1 f(n,m)=[f(n-1,m)]%n
求n最后剩下的,需要n-1…,当n=1,只有0
public class C62_num_LastRemaining {
static int lastRemaining(int n,int m){
if(n<1||m<1){
return -1;
}
int last =0;
for(int i=2;i<=n;i++){
last=(last+m)%i;
}
return last;
}
}
Test
public static void main(String[] args) {
System.out.println(lastRemaining(5,3));
}