首页 > 作文

剑指offer第四十六题孩子们的游戏(圆圈中最后剩下的数)

更新时间:2023-04-04 02:26:04 阅读: 评论:0

题目描述

每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小舍本逐末意思朋友,今年亦是如此。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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图