孩子们的游戏
程序员文章站
2024-01-03 13:29:28
...
- 这道题很简单,使用bo标志位和list数组进行双指针计算,
import java.util.List;
import java.util.ArrayList;
public class Solution {
public int LastRemaining_Solution(int n, int m) {
//当孩子为0时,返回-1
if(n==0)return -1;
//创建list和bo
List<Integer> list=new ArrayList<>();
boolean[] bo=new boolean[n];
//初始化
int i=0;
int ref=1;
//终止条件list.size()==n-1
while(list.size()<n-1){
if(bo[i]==false){
//数到的数达到m,则添加进链表,重新开始数数,否则继续数
if(ref==m){
list.add(i);
bo[i]=true;
ref=1;
}else{
ref++;
}
}
i=i+1<n?i+1:0;
}
//当前不在链表中的元素
for(int j=0;j<n;j++){
if(!list.contains(j)){
return j;
}
}
return -1;
}
}