问题:有n个人站成环。从1开始报数,报k的人去死,之后下一个人报1,问当你是第几个的时候可以活下来?
思路:每杀一个人就重新整理数组,发现上层数组循环左移k位并删除循环左移后的末位即可得到下一层数组
代码如下:
public static int lastRemaining(int n,int k){
int win=0;
for(int i=2;i<=n;i++) {
win=(win+k)%i;
}
return win;
}
18604010802,记得加备注