不在状态哎

class Solution {
public:
    int LastRemaining_Solution(int n, int m) {
      if (n == 1) {
        return 0;
      }
      
      int x = LastRemaining_Solution(n - 1, m);
      
      //  上一级删除的元素1`
      return (m + x) % n;
    }
};

迭代

class Solution {
public:
    int LastRemaining_Solution(int n, int m) {
      if (n == 0 || m == 0) {
        return -1;
      }
      
      //  出圈后会重新编号
      int res = 0;
      
      //  i个朋友
      for (int i = 2; i <= n; ++i) {
        //  从后往前退,已知只有一个时为0
        //  使用数学表达式推出新旧编码之间的关系
        //  m  m+1  m+2  (m-1)出列
        //  0   1    2
        //  这里求旧编号,目前是新编号
        //  模上上一轮人数,防止溢出
        res = (res + m) % i;
      }
      
      return res;
    }
};