题目解析
本题是经典的约瑟夫环问题,约瑟夫环主要是模拟环,这里的环可以使用循环链表,双端队列模拟,也可以基于数组结构,使用特定逻辑模拟环向运动。
但是最简单最通用的还是使用双端队列。
Java算法源码
import java.util.ArrayDeque;
import java.util.Scanner;
import java.util.StringJoiner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
// 如果输入参数M小于等于1或者大于等于100,输出“ERROR!”
if (m <= 1 || m >= 100) {
System.out.println("ERROR!");
return;
}
// 使用双端队列模拟约瑟夫环
ArrayDeque<Integer> queue = new ArrayDeque<>();
for (int id = 1; id <= 100; id++