/*题目
* 圆圈中最后剩下的数字 (约瑟夫环)
* */
/*思路
* 不管第几个 圆圈内都是循环的,求余数就可以
* 注意要点 每次删除一个数,要从删除的下一个数开始
* 所以核心公式 bt + m - 1,以为数次 从0开始 故m-1,
* 从删除数下一个 就是bt的位置 ,因为环里删除一个数,
* 下一个数刚刚好补齐那个位置
* */
public int LastRemaining_Solution(int n, int m){
LinkedList<Integer> list = new LinkedList<Integer>();
int bt = 0 ;
for(int i = 0; i < n ; i++){
list.add(i);
}
while(list.size() > 1){
bt = (bt + m - 1)%list.size();
list.remove(bt);
}
return list.size() == 1 ? list.get(0) : -1;
}