常见笔试面试问题(经典)
约瑟夫环问题,利用可变数组存储,找出满足条件的值,去掉该值,再取模输出其他的结果。
package exer;
import java.util.LinkedList;
import java.util.List;
public class Exer {
public static void main(String args[]){
// 一共有7个小朋友
int m = 7;
// 报到3的小朋友出局
int n = 3;
List<Integer> list = new LinkedList<>();
for (int i = 1; i <= m; i++) {
list.add(i);
}
int index = 0;
while (list.size() != 1) {
index = (index + n - 1) % list.size();
System.out.println(list.get(index) + "号小朋友出局");
list.remove(index);
}
System.out.println("最后" + list.get(0) + "号小朋友出局");
}
}
输出结果
3号小朋友出局
6号小朋友出局
2号小朋友出局
7号小朋友出局
5号小朋友出局
1号小朋友出局
最后4号小朋友出局