问题描述:
100个人手拉手,数数,数到3的倍数的人退出,最后剩下的是之前的第几个人
思路:
因为手拉手所以最后会成一个环,创建2个int类型的对象,number来记录数数的位置,point来记录该次循环的位置,
当该次循环位置大于剩余人数就归零,
这样当number为 div(题目里是3) 的倍数的时候,就将对应的元素删除,循环到最后剩余1人,即可
代码实现:
public int solution(List<Integer> list ,int size,int div) {
int point = 0;
int number = 1;
while (list.size() > 1) {
if (number % div == 0) {
list.remove(point);
point--;
}
point++;
number++;
if (point > (list.size() - 1)) {
point = 0;
}
}
return list.get(0);
}