题目:
对于这道典型的约瑟夫环问题,由于数据量较大不能采用常规的链表模拟(一般C++中涉及到链表的10^5数据就得几秒),故只能采用更快巧妙的方法。
我们可以看看这个递推过程是什么
首先:
这个环为 0,1,2,3,4 删除 2
其次这个环为3,4,0,1 删除0
接着这个环为1, 3, 4 删除4
接着这个环为1 ,3 删除1
最后这个环只有3 删除3
我们可以知道最后删除的3在最后环的位置是0,所以我们可以推出在1,3环时候3的位置1,一直往上推,推到最开始最后保留3的位置是3
int ans=0;
for(int i=2;i<=n;i++)
{
ans=(ans+m)%i;
}
大家还是去原题处看吧:
https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/solution/