A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© H_shaohui 中级黑马   /  2016-6-22 12:57  /  841 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.ArrayList;
import java.util.Iterator;

/**
* 第10题:有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,
* 从1报数,到14退出。问:最后剩下的是100人中的第几个人?
*
* @author
*
*/
public class Test10 {
        public static void main(String[] args){
                //将100个人从1到100按顺序添加到ArrayList集合中
                ArrayList<Integer> List = savaPeople();
                //获取最后剩下的是100人中的某人
                int newList = getLastPeople(List);
                System.out.println("最后剩下的是100人中的第("+newList+")个人");
        }
       
        //将100个人从1到100按顺序添加到ArrayList集合中
        public static ArrayList<Integer> savaPeople(){
                //创建一个ArrayList集合用来存储这100个人
                ArrayList<Integer> List = new ArrayList<Integer>();
                //按照顺序从1到100加入到List集合中
                for(int i = 1 ; i < 101 ; i++)
                {
                        List.add(i);//添加人
                }
                //返回已存储了100人的ArrayList集合
                return List;
        }
       
        //获取最后剩下的是100人中的某人
        public static int getLastPeople(ArrayList<Integer> List){
                //定义一个计时器
                int count = 0;
                //该循环的意思是,将这个集合当作是一个圆。每次遍历数数,数到14,就将该元素从集合中删除。
                //然后从删除后的元素的后一位从1再开始数,再数到14后删除。以此类推,直到集合中只剩下一个元素,则退出循环
                while(List.size()!=1)
                {
                        //创建一个迭代器,用来遍历该集合
                        Iterator<Integer> itr = List.iterator();
                        //判断是否到集合末尾,没到则继续遍历
                        while(itr.hasNext())
                        {
                                //每次循环定时器加一
                                count++;
                                int element = itr.next();//找到下一个元素
                                //如果数到第14个元素,则将该元素从集合中删除。计时器再清零,重新计算
                                if(count%14==0)
                                {
                                        itr.remove();//将该元素从集合中删除
                                        count=0;//计时清零
                                }
                        }
                }
                //返回在该集合中最后的一个元素
                return List.get(0);
        }
}

4 个回复

倒序浏览
我的也是这道啊
回复 使用道具 举报
小白看着觉得好难啊   一定好好学习
回复 使用道具 举报
是就业班的入学考试吗
回复 使用道具 举报
貌似有点难度啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马