Java实现约瑟夫环(100人手拉手...)

问题描述:

100个人手拉手,数数,数到3的倍数的人退出,最后剩下的是之前的第几个人

思路:

因为手拉手所以最后会成一个环,创建2个int类型的对象,number来记录数数的位置,point来记录该次循环的位置,
当该次循环位置大于剩余人数就归零,
这样当number为 div(题目里是3) 的倍数的时候,就将对应的元素删除,循环到最后剩余1人,即可

代码实现:

public int solution(List<Integer> list ,int size,int div) {
   int point = 0;
   int number = 1;

   while (list.size() > 1) {
       if (number % div == 0) {
           list.remove(point);
           point--;
       }
       point++;
       number++;

       if (point > (list.size() - 1)) {
           point = 0;
       }
   }
   return list.get(0);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,060评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,509评论 2 59
  • 大雁南飞,飞吹散, 万里学封苍穹。 雪园槛外,几轮翠, 你我一言一语。 巨木不才,羞草酣眠, 忆百年轮回,桃源不在...
    麻麻_这个蜀黍有点怪阅读 3,153评论 0 0
  • 大雨去拉臭,妈妈说让爸爸陪着吧。 大雨对爸爸说,爸爸你拿着手机吧
    大雨不愁阅读 984评论 0 0
  • 彭旭的梦想清单,笔记本记录三要素。第一个是梦想清单,这个是我非常需要的,我有很多梦想,我也有记录,但是从没有把他分...
    逢践未来的自己阅读 1,360评论 0 0

友情链接更多精彩内容