考按余数去找规律 import java.util.*; public class Solution { public int LastRemaining_Solution(int n, int m) { //直接用list循环剔除 ArrayList<Integer> list=new ArrayList<Integer>(); //list里面放数字 for(int i=0;i<=n-1;i++) { list.add(i); } //去处数字,去除以后往前移 // 第一轮 //m表示一共要加多少数 //list.size()表示一圈有多少个数 int i=0; if((0+m)>list.size()) { i=(0+m)%list.size()-1; } else { i=m-1; } //i,每一轮的i都会变化 while(list.size()>1) { // System.out.println(list); list.remove(i); //从它的下一个小朋友开始 //如果是最后一个,从0开始 if((i+m-1)>=list.size()) { i=(i+m-1)%list.size(); } else { i=i+m-1; } } return list.get(0); } }