题解 | #孩子们的游戏(圆圈中最后剩下的数) 一个新的思路~#
孩子们的游戏(圆圈中最后剩下的数)
http://www.nowcoder.com/practice/f78a359491e64a50bce2d89cff857eb6
约瑟夫环的核心问题:从被删除的下一个下标开始计数可以转化成 从0开始计数加上上次删除的下标数
import java.util.*;
public class Solution {
public int LastRemaining_Solution(int n, int m) {
if(n==0){
return -1;
}else if(n==1){
return 0;
}
//记忆初始数字
int k = m;
List<Integer> list = new ArrayList<>();
for(int i=0;i<n;i++){
list.add(i);
}
while(list.size()!=1){
//获取这次删除的下标
int del = m%list.size()-1;
//恢复原来的数字
m=k;
if(del<0){
del+=list.size();
}
//记忆这次删除的下标数,从下一个下标开始计数可以转化成从0开始计数加上上次删除的下标
m+=del;
list.remove(del);
}
return list.get(0);
}
}
阿里云成长空间 733人发布