牛客题霸NC132环形链表的约瑟夫问题Java题解
https://www.nowcoder.com/practice/41c399fdb6004b31a6cbb047c641ed8a?tpId=117&&tqId=35273&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
方法:利用数学公式反推
解题思路:反推过程:(当前index + m) % 上一轮剩余数字的个数。
import java.util.*; public class Solution { /** * * @param n int整型 * @param m int整型 * @return int整型 */ public int ysf (int n, int m) { int res = 0; //最后一轮剩下2个人,所以从2开始反推 for (int i = 2; i <= n; i++) { res = (res + m) % i; } return res+1; } }