下面给大家分享的是一个Java代码实例,下面一起来了解一下吧。

抽象建模能力

题目:

让小朋友们围成一个大圈,之后,随机指定一个数m,让编号为0的小朋友开始报数。

每一次,喊到了m-1的那个小朋友要出列唱一首歌,然后可以在礼品箱中随意的挑选礼物,并且不用再回到圈中,从他的下一个小朋友开始,继续0...m-1报数,一直到剩下最后一个小朋友,就可以不用表演,并且拿到名侦探柯南典藏版(名额有限)。

问:哪个小朋友会得到名侦探柯南典藏版?

注:小朋友的编号是从0到n-1

假如没有小朋友,请返回-1

思路1:

用数组来模拟环,思路还是比较简单,但是各种下标要理清

代码实现:public static int findLastNumber(int n, int m)

{

if (n

int[] array = new int[n];

int i = -1, step = 0, count = n;

while (count > 0)

{ //跳出循环时将最后一个元素也设置为了-1

i++; //指向上一个被删除对象的下一个元素。

if (i >= n) i = 0; //模拟环。

if (array[i] == -1) continue; //跳过被删除的对象。

step++; //记录已走过的。

if (step == m)

{ //找到待删除的对象。

array[i] = -1;

step = 0;

count--;

}

}

return i; //返回跳出循环时的i,即最后一个被设置为-1的元素

}

思路2

代码实现:public class Solution

{

public int LastRemaining_Solution(int n, int m)

{

if (m <= 0 || n <= 0)

{

return -1;

}

//先构造循环链表

ListNode head = new ListNode(0); //头结点, 值为0

ListNode pre = head;

ListNode temp = null;

for (int i = 1; i

{

temp = new ListNode(i);

pre.next = temp;

pre = temp;

}

temp.next = head; //将第n-1个结点(也就是尾结点)指向头结点

ListNode temp2 = null;

while (n != 1)

{

temp2 = head;

//先找到第m个结点的前驱

for (int i = 1; i

{

temp2 = temp2.next;

}

//删除第m个结点:将第m个结点的前驱指向第m个结点后面那个结点,temp2表示第m个结点的前驱

temp2.next = temp2.next.next;

head = temp2.next; //更新头结点

n--;

}

return head.value;

}

}

/**

* 结点

*/

class ListNode

{

int value;

ListNode next = null;

public ListNode(int val)

{

this.value = val;

}

}

思路3

代码实现:import java.util.ArrayList;

public class Solution

{

public int LastRemaining_Solution(int n, int m)

{

if (n == 0)

return -1;

ArrayList  array = new ArrayList  ();

for (int i = 0; i

{

array.add(i);

}

int tempIndex = (m - 1) % array.size(); //用于记录最初需清除的数字索引

while (array.size() != 1)

{

//System.out.println(array.get(tempIndex));

array.remove(tempIndex);

tempIndex = (tempIndex + (m - 1)) % array.size(); //记录当前索引

}

return array.get(0);

}

}

更多的抽象建模能力Java实例,可以继续关注本站了解哦,有更多相关内容,可以分享给大家。

java名侦探柯南游戏大全_孩子们的游戏(圆圈中最后剩下的数),Java代码实现思路分享...相关推荐

  1. 孩子们的游戏(圆圈中最后剩下的数)

    题目:孩子们的游戏(圆圈中最后剩下的数) 题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首 ...

  2. java输出带圆圈数字_java实现孩子们的游戏(圆圈中最后剩下的数)

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  3. 剑指offer:孩子们的游戏(圆圈中最后剩下的数)

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  4. 46. 孩子们的游戏-圆圈中最后剩下的数字

    题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机 ...

  5. 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)

    一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

  6. 剑指offer-孩子们的游戏(圆圈中最后剩下的数)

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  7. java破案游戏大全_“我是大侦探,测试即破案”

    "我是大侦探,测试即破案" 2013/12/19 16:09:11  糖糖豆豆  程序员俱乐部  我要评论(0) 摘要:我从05年毕业就开始从事测试工作,从不了解或者说是误解,到全 ...

  8. 48.孩子们的游戏(圆圈中最后剩下的数)

    题目描述:   每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他 ...

  9. java输出带圆圈数字_AcWing 82. 圆圈中最后剩下的数字--Java代码

    算法1 (环形链表) $O(n)$ 经典的解法, 用环形链表模拟圆圈. 创建一个总共有 n 个结点的环形链表,然后每次在这个链表中删除第 m 个结点. Java 代码 class Solution { ...

最新文章

  1. 苹果公司提出Mobile-ViT | 更小更轻精度更高,MobileNets或成为历史
  2. 练习5.1更新——四则运算 测试与封装
  3. 关于Spring 国际化 No message found under code 的解决方案
  4. Spring JdbcTemplate快速入门
  5. 简陋版:基于python的自动化测试框架开发
  6. 2014 网选 5014 Number Sequence(异或)
  7. 项目中会用到的开源项目列表
  8. Microsoft Office SharePoint Server 2007-协同办公之师
  9. app软件测试用例文档模板,最好用的软件测试用例模板一详细用例(经典)-20210630010251.pdf-原创力文档...
  10. 超级搜索术-思维导图
  11. android dex2oat 编译,dex2oat代码阅读笔记
  12. 删除EFI系统分区(ESP)后Windows无法启动,重建引导分区并修复启动的过程
  13. Pyhton之模拟石头剪子布游戏篇
  14. HTML5吃豆豆游戏开发实战(三)2d碰撞检测、重构
  15. x265 windwos使用wsl调试
  16. 远古的化石--美丽胡杨林
  17. 经典蓝牙和低功耗蓝牙的区别
  18. c++11:std::default_delete
  19. React 组件封装之 Card 卡片
  20. 模板template

热门文章

  1. 普通的Shader-物体移动身后残影的一种实现
  2. 1044 火星数字 (20分)
  3. Binder的使用方法和源码解析
  4. C++学习书籍推荐《C++程序设计原理与实践》下载
  5. 计算直线与平面的交点
  6. C语言 ERROR C2040 ' ' differs in levels of indirection from ' '
  7. 【NOIP2017 提高组正式赛】列队 题解
  8. 计算机网络的应oa,计算机网络中办公室自动化oa按计算机分类属于什么
  9. 尹雅楠 天津计算机老师 商学院,大学计算机基础教程
  10. 车宇景--网络课程平台--生成试卷