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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这道题我看过不少的解答思路,也都不错,但是我觉得有些太繁琐,运用递归可以比较简练,但是递归相对来说效率不是很高。所以我运用了集合迭代的办法,以下是我的代码。如果你数学好的话完全可以不需要集合、数组这些,也就是一个公式就能搞定,五六行代码就行。。。
  1. import java.util.ArrayList;
  2. import java.util.Iterator;

  3. /**
  4. * 题目:有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
  5. * 思路:
  6. * 1、创建一个集合,依次往集合中存入1到100的数;
  7. * 2、遍历集合,当遍历集合中元素的次数是14的整数倍时将这个数从集合中移除;
  8. * 3、重复上述步骤,直到集合的长度为1,剩下的数就是所需的第几个人。
  9. * @author xinpeng
  10. *
  11. */
  12. public class NumberDemo{
  13.         public static void main(String[] args) {
  14.                 //创建List集合
  15.                 ArrayList<Integer> al = new ArrayList<Integer>();
  16.                 //循环往集合中添加1-100的数据
  17.                 for(int i=1;i<=100;i++){
  18.                         al.add(i);
  19.                 }
  20.                
  21.                 //初始化遍历集合中元素的次数
  22.                 int count = 0;
  23.                 int n = 0;
  24.                 //当集合的长度大于1时继续遍历集合中的元素
  25.                 while(al.size()>1){
  26.                         //获取最新集合的迭代器
  27.                         Iterator<Integer> it = al.iterator();
  28.                         while(it.hasNext()){
  29.                                 n = it.next();
  30.                                 count++;
  31.                                 //当遍历集合中元素的次数是14的整数倍时将该元素移除出集合
  32.                                 if(count%14==0){
  33.                                         System.out.println("当前删除的元素是:"+n);
  34.                                         it.remove();
  35.                                 }
  36.                         }
  37.                 }
  38.                 System.out.println("最后剩下的是100人中的第"+al.get(0)+"个人");
  39.         }
  40. }
复制代码

评分

参与人数 2技术分 +1 黑马币 +5 收起 理由
郑飞 + 5 很给力!
杨佳名 + 1

查看全部评分

7 个回复

倒序浏览
分享试题了啊- -
回复 使用道具 举报
关键是迭代器还比较容易懂和简单,效率也不错,赞一个
回复 使用道具 举报
jeromechen 发表于 2014-11-1 18:20
关键是迭代器还比较容易懂和简单,效率也不错,赞一个

我自己写的觉得很容易理解,谁知道你们也觉得易懂,那这方法还是不错的:lol
回复 使用道具 举报
简洁明了.方便实用,楼主威武
回复 使用道具 举报
楼主的方法容易理解 ,赞一个
回复 使用道具 举报
为什么n 这个变量全部删掉之后,运行会报错
回复 使用道具 举报
赞一个。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马