【解题思路】
暴力法,超出时间限制。
class Solution {
public int lastRemaining(int n, int m) {
if(m == 1) return n-1;
boolean[] flag = new boolean[n];
Arrays.fill(flag, false);
int cnt = 0, end = 0, ans = 0;
while(cnt < n-1)
{
int start = end;
int tmp = 0;
while(tmp < m-1)
{
while(flag[start] == true)
{
start = (start+1)%n;
}
start = (start+1)%n;
while(flag[start] == true)
{
start = (start+1)%n;
}
tmp++;
}
flag[start] = true;
end = start;
cnt++;
}
for(int i = 0; i < n; i++)
{
if(flag[i] == false)
{
ans = i;
break;
}
}
return ans;
}
}
class Solution {
public int lastRemaining(int n, int m) {
int f = 0;
for (int i = 2; i != n + 1; ++i) {
f = (m + f) % i;
}
return f;
}
}