java名侦探柯南游戏大全_孩子们的游戏(圆圈中最后剩下的数),Java代码实现思路分享...
下面给大家分享的是一个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代码实现思路分享...相关推荐
- 孩子们的游戏(圆圈中最后剩下的数)
题目:孩子们的游戏(圆圈中最后剩下的数) 题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首 ...
- java输出带圆圈数字_java实现孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- 剑指offer:孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- 46. 孩子们的游戏-圆圈中最后剩下的数字
题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机 ...
- 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)
一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...
- 剑指offer-孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- java破案游戏大全_“我是大侦探,测试即破案”
"我是大侦探,测试即破案" 2013/12/19 16:09:11 糖糖豆豆 程序员俱乐部 我要评论(0) 摘要:我从05年毕业就开始从事测试工作,从不了解或者说是误解,到全 ...
- 48.孩子们的游戏(圆圈中最后剩下的数)
题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他 ...
- java输出带圆圈数字_AcWing 82. 圆圈中最后剩下的数字--Java代码
算法1 (环形链表) $O(n)$ 经典的解法, 用环形链表模拟圆圈. 创建一个总共有 n 个结点的环形链表,然后每次在这个链表中删除第 m 个结点. Java 代码 class Solution { ...
最新文章
- 苹果公司提出Mobile-ViT | 更小更轻精度更高,MobileNets或成为历史
- 练习5.1更新——四则运算 测试与封装
- 关于Spring 国际化 No message found under code 的解决方案
- Spring JdbcTemplate快速入门
- 简陋版:基于python的自动化测试框架开发
- 2014 网选 5014 Number Sequence(异或)
- 项目中会用到的开源项目列表
- Microsoft Office SharePoint Server 2007-协同办公之师
- app软件测试用例文档模板,最好用的软件测试用例模板一详细用例(经典)-20210630010251.pdf-原创力文档...
- 超级搜索术-思维导图
- android dex2oat 编译,dex2oat代码阅读笔记
- 删除EFI系统分区(ESP)后Windows无法启动,重建引导分区并修复启动的过程
- Pyhton之模拟石头剪子布游戏篇
- HTML5吃豆豆游戏开发实战(三)2d碰撞检测、重构
- x265 windwos使用wsl调试
- 远古的化石--美丽胡杨林
- 经典蓝牙和低功耗蓝牙的区别
- c++11:std::default_delete
- React 组件封装之 Card 卡片
- 模板template