- package com.itheima;
- import java.util.LinkedList;
- /**
- * @author Mr 10、
- * 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
- */
- public class Test10 {
- public static void main(String[] args) {
- // 因为频繁删除所以用LinkedList
- LinkedList<Integer> nums = new LinkedList<Integer>();
- for (int i = 1; i <= 100; i++) {
- nums.add(i);
- }
- System.out.println(nums);
-
- int flag = 0;
- loop: while (true) {// 将普通队列模拟成循环队列结构,并定义跳出点,开始遍历循环队列
- for (int i = 0; i < nums.size(); i++) {
- Integer num = nums.get(i);
- if (++flag == 14) {// 如果是计数第14个 删除该元素
- nums.remove(num);
- i--;// 元素减少一个 ,循环指针跟着动
- System.out.println("删除:" + num);
- System.out.println("剩余:" + nums);
- flag = 0;// 计数归零
- if (nums.size() == 1)
- break loop;
- }
- }
- }
- }
- }
复制代码 |