美文网首页
圈圈中最后剩下的数

圈圈中最后剩下的数

作者: zhouwaiqiang | 来源:发表于2019-03-24 23:55 被阅读0次

题目描述

每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今
年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其
中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机
指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋
友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到
圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去...
.直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名
侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友
会得到这份礼品呢?(注:小朋友的编号是从0到n-1)

解题思路

1. 这个是经典的算法题了,英文名忘了J开头的,回头补充上。
2. 思路比较简单声明一个队列然后开始出队,如果到达了m-1这个
数字那么就出队,否则出队的元素就再次入队直到队空。

Java实现代码

import java.util.*;
public class Solution {
    public int LastRemaining_Solution(int n, int m) {
        LinkedList<Integer> queue = new LinkedList<>();
        for (int i=0; i<n; i++) queue.add(i);
        int count = 0;
        while (!queue.isEmpty()) {
            int result = queue.poll();
            if (count == m-1) {
                if (queue.isEmpty()) return result;
                count = 0;
            }
            else {
                queue.add(result);
                count++;
            }
        }
        return -1;
    }
}

相关文章

  • 圈圈中最后剩下的数

    题目描述 解题思路 Java实现代码

  • 圆圈中最后剩下的数

    题目描述 0,1,……,n - 1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆...

  • 圆圈中最后剩下的数

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也...

  • 32.圆圈中最后剩下的数

    约瑟夫环的问题:分析:利用std::list 弄一个链表,代替圆圈;但是list不是成环的,所以每次迭代器遍历到尾...

  • Java日记2018-06-13

    扑克牌顺子 圆圈中最后剩下的数 股票的最大利润

  • 冒泡排序

    每次回把最大的数冒泡到最后一个,然后剩下的数接着冒泡,最终数会从小到大排

  • JZ-046-圆圈中最后剩下的数

    圆圈中最后剩下的数 题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛...

  • 最后

    最后只剩下一群人 和那盏橘黄的路灯 最后那盏灯熄灭了 最后只剩下我们 最后我们也不在了 最后只剩下那只在空气中悬浮...

  • LeetCode 268. Missing Number

    三种方法1、异或操作。因为两个相同的数异或之后等于零,所以将数组与0到n异或,最后剩下的那个数就是数组中缺失的数。...

  • 艾灸数圈圈,效果更好。

    在课堂上老师教艾灸的时候,就是教的一圈一圈的转,从里到外,从外到里,一圈压着一圈;学了之后照做了一段时间,就完全跑...

网友评论

      本文标题:圈圈中最后剩下的数

      本文链接:https://www.haomeiwen.com/subject/yykmvqtx.html