方法一:使用列表模拟游戏过程
import java.util.ArrayList;
public class Solution {
public int LastRemaining_Solution(int n, int m) {
if (n == 0 || m == 0){
return -1;
}
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < n; i++) {
list.add(i);
}
int index = 0;
while (list.size() > 1){
index = (index + m - 1) % list.size();
list.remove(index);
}
return list.get(0);
}
}
方法二:使用数组模拟环
import java.util.ArrayList;
public class Solution {
public int LastRemaining_Solution(int n, int m) {
if (n == 0 || m == 0){
return -1;
}
int[] result = new int[n];
int length = n;
int i = -1,count = 0;
while (n > 0){
i++;
if (i >= length){
i = 0;
}
if (result[i] == 1){
continue;
}
count++;
if (count == m){
result[i] = 1;
count = 0;
n--;
}
}
return i;
}
}