每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小舍本逐末意思朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数….这样下去….直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1)
如果没有小朋友,请返回-1
方法一:使用数组模拟环:
package test;/* *这道题用数组来模拟余额宝利息计算器环,思路还是比较简单,但是各种下标要理清 */class Solution { public in上海高中学校t LastRemaining_Solution(int n, int m) { if(n<1||m<1) return -1; int[] array = new int[n]; int i = -1,step = 0, count = n;//count 是 n,也就是人数,是一直减少的,m是不变的 while(count>0){ 裙子的英语怎么写 i++;//第几个人 if(i == n) i=0;//模拟环。 if(array[i] == -1) continue; //continue:继续运行循环,但是要忽略这次重复剩余的循环体的语句 step++; if(step==m) { array[i]=-1; step = 0; count--; } } return i;//返回跳出循环时的i,即最后一个被设置为-1的元素 }}public class Main{ public static void main(String[] args) { int a = 3;//人数 int b = 3;//数的数 Solution p = new Solution(); int c = p.LastRemaining_Solution(a, b); System.out.println("结果:"+c); }}//0 1 2 三个工地宣传标语人数到 0 1 2
为了方便理解,举了个例子…
本文地址:https://blog.csdn.net/qq1922631820/article/details/107851952
本文发布于:2023-04-04 02:26:02,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/da301d4c90e5db06a9abde7aeff9510f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:剑指offer第四十六题孩子们的游戏(圆圈中最后剩下的数).doc
本文 PDF 下载地址:剑指offer第四十六题孩子们的游戏(圆圈中最后剩下的数).pdf
留言与评论(共有 0 条评论) |