题目描述
0,1,2------n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求剩下的最后一个数字。
解法一:
用链表模拟圆环
import java.util.*;
public class Solution {
public int LastRemaining_Solution(int n, int m) {
if(n<1||m<1)
return -1;
LinkedList<Integer> list=new LinkedList();
for(int i=0;i<n;i++)
{
list.add(i);
}
int current=0;
while(list.size()>1)
{
for(int i=1;i<m;i++)
{
current++;
if(current == list.size())//每次遍历到结尾时回到链表起点
current=0;
}
list.remove(current);//remove了current后current作为index自动指向下一个节点
if(current == list.size())//若current == list.size(),current回到链表起点
current=0;
}
return list.get(0);
}
}
解法二:
找数学规律