该题目其实就是约瑟夫问题,只不过换了一种说法而已,无非就是取余数的题目。可以这样想象(10个人,以3为一组开始循环,最后肯定余一个1,所以,该题目就是如何把那个1搞出来)。
每次循环咔一个人,咔的人是第m-1个。
循环:
class Solution
{
public int LastRemaining_Solution(int n, int m)
{
if (n == 0)
return -1;
int s = 0;
for(int i = 2; i <= n; i++)
{
s = (s + m) % i;
}
return s;
}
}
递归:
class Solution
{
public int LastRemaining_Solution(int n, int m)
{
// write code here
if(n < 1)
return -1;
else if(n == 1)
return 0;
else
return (LastRemaining_Solution(n-1,m)+m)%n;
}
}