题解 | 约瑟夫环
约瑟夫环
https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int m = sc.nextInt();
// 1. 建一圈人:0 1 2 3 4 ...
List<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(i);
}
// 2. 从第 k 个人开始
int index = k;
// 3. 一直删人,直到剩 1 个
while (list.size() > 1) {
// 数 m 个:走 m-1 步(因为当前也算1个)
index = (index + m - 1) % list.size();
// 删掉这个人
list.remove(index);
}
// 最后剩下的就是大王
System.out.println(list.get(0));
}
}
查看25道真题和解析