JAVA面试题-国王杀100个和尚

本文最后更新于2023.06.26-23:48,某些文章具有时效性,若有错误或已失效,请在下方留言或联系涛哥

题目

国王杀100和尚,和尚编号从1-100,和尚从1数到5就把这个和尚杀掉,以此类推,最后只有一个和尚活着,请问这个和尚编号为多少?

代码

       List list = new ArrayList();
        for (int i = 1; i <= 100; i++) {
            list.add(i);
        }
        // 1-5 计数
        int i = 1;
        // 算法结束,只剩下一人
        while (list.size() > 1) {
            for (int j = 0; j < list.size(); j++) {
                // 数到5 杀掉
                if (i == 5) {
                    list.remove(j);
                    // 移除元素后队列长度变短,索引-1
                    j--;
                    if (i > list.size()) {
                        i = 1;
                        break;
                    }
                    // 初始为 1= 1;所以在i++前设置i = 0
                    i = 0;
                }
                // 数数 ++1
                i++;
            }
        }
        System.out.println("幸运儿:"+list.get(0));

结果

幸运儿:79
阅读剩余
THE END