public class Solution { // 方式一:递归 public int LastRemaining_Solution(int n, int m) { return (n == 1) ? 0 : (LastRemaining_Solution(n - 1, m) + m) % n; } // 方式二:非递归 public int LastRemaining_Solution2(int n, int m) { int res = 0; for (int i = 2; i <=n; i++) { res = (res+m)%i; } return 0; } }
解题思想:约瑟夫环问题,公式:f(n,m)=(f(n-1,m)+m)%n