输入一个整数n,要求从1-n人中,第一次第1个人数后面的第一个人出列,第二次当前人后面的第2个人出列..依次出列,求最后一个出列人数的编号是多少
例子:n=11
出列顺序:2 5 9 4 1 3 8 10 11 6 7,所以答案输出7
package 趋势科技考试;
import java.util.ArrayList;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(josephProblem(n));
}
public static int josephProblem(int n) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
list.add(i);
}
int i = 0;
int count = 0;
while (list.size() != 1) {
count++;
i = (i + count) % list.size();
}
return list.get(0);
}
}