/*模拟法
@v7fgg
执行用时:1077 ms, 在所有 Java 提交中击败了17.67%的用户
内存消耗:41.5 MB, 在所有 Java 提交中击败了100.00%的用户
2020年7月14日 16:01
*/
class Solution {
public int lastRemaining(int n, int m) {
List<Integer> ans=new ArrayList<>();
for(int i=0;i<n;i++){
ans.add(i);
}
int start=0;
while(ans.size()>1){
int m1=m%ans.size();
int rem=(ans.size()+start+m1-1)%ans.size();
ans.remove(rem);
start=rem;
}
return ans.get(0);
}
}
/*
@v7fgg
执行用时:13 ms, 在所有 Java 提交中击败了36.87%的用户
内存消耗:42.3 MB, 在所有 Java 提交中击败了100.00%的用户
2020年7月14日 21:38
*/
class Solution {
public int lastRemaining(int n, int m) {
return n==1?0:(m+lastRemaining(n-1,m))%n;
}
}