当前位置: 首页 > news >正文

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

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

  • 题目
  • 题解(138)
  • 讨论(914)
  • 排行
  • 面经

    new

中等  通过率:33.14%  时间限制:1秒  空间限制:256M

知识点基础数学

描述

    每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。然后,随机指定一个数 m ,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0... m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客礼品,请你试着想下,哪个小朋友会得到这份礼品呢?

数据范围:1≤𝑛≤50001≤n≤5000,1≤𝑚≤100001≤m≤10000

要求:空间复杂度 𝑂(1)O(1),时间复杂度 𝑂(𝑛)O(n)

思路:

方法一是用链表模拟每一次到然后退出的过程,最后看剩下哪一个号。

方法二是递归的做法,规定dp数组,i表示有i个人的时候,最后剩下的数字。找dp[i]和dp[i-1]的关系。


因此,当dp[i-1]的值i-m到i-1的时候,dp[i]=dp[i-1]-(i-m),当dp[i-1]的值在0到i-1-m时,dp[i]=dp[i-1]+m.

因此只需要进行递归就可以的出dp[n]也就是所要求的结果。

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param n int整型 * @param m int整型 * @return int整型*/struct ListNode{int val;ListNode*next;};int LastRemaining_Solution(int n, int m) {//     // write code here//  ListNode *head=new ListNode;//  ListNode*pre=head;//  head->val=0;//  for(int i=1;i<n;i++)//  {//     ListNode*cur=new ListNode;//     cur->val=i;//     pre->next=cur;//     pre=cur;//  }//  pre->next=head;//  ListNode*curnode=head;// //  for(int i=0;i<=n;i++)// //  {// //     cout<<curnode->val;// //     curnode=curnode->next;// //  }// while(--n)// {//    for(int i=0;i<m-1;i++)//    {//      curnode=curnode->next;//      pre=pre->next;//    }//    curnode=curnode->next;//    pre->next=curnode;// }//  return pre->val;vector<int>dp(n+1);dp[1]=0;for(int i=2;i<=n;i++){ int m1=m;m1%=i;if(dp[i-1]<=(i-m1-1)%i){dp[i]=dp[i-1]+m1;}else {dp[i]=dp[i-1]-(i-m1);}}return dp[n];}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Hadoop|HDFS篇】HDFS概述
  • 微信小程序知识点(二)
  • Meaven的安装
  • [机器学习]线性回归算法
  • 面向切面:AOP
  • pyflink的窗口
  • MySQL系列—7.内存结构
  • ❤《实战纪录片 1 》原生开发小程序中遇到的问题和解决方案
  • AcWing算法基础课-786第k个数-Java题解
  • 论文速读|利用局部性提高机器人操作的样本效率
  • Peewee+Postgresql+PooledPostgresqlDatabase重连机制
  • 数据结构————栈、队列
  • Uniapp基础学习(二)
  • Anchor Alignment Metric来优化目标检测的标签分配和损失函数。
  • [数据集][目标检测]西红柿成熟度检测数据集VOC+YOLO格式3241张5类别
  • Google 是如何开发 Web 框架的
  • 自己简单写的 事件订阅机制
  • 【css3】浏览器内核及其兼容性
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【个人向】《HTTP图解》阅后小结
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Android 架构优化~MVP 架构改造
  • C++类的相互关联
  • React as a UI Runtime(五、列表)
  • React-flux杂记
  • SQLServer之创建数据库快照
  • vue的全局变量和全局拦截请求器
  • vue脚手架vue-cli
  • windows-nginx-https-本地配置
  • 解析带emoji和链接的聊天系统消息
  • 力扣(LeetCode)56
  • 前端_面试
  • 使用Gradle第一次构建Java程序
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 通过几道题目学习二叉搜索树
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 新版博客前端前瞻
  • 用Visual Studio开发以太坊智能合约
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 扩展资源服务器解决oauth2 性能瓶颈
  • #pragam once 和 #ifndef 预编译头
  • #window11设置系统变量#
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (12)目标检测_SSD基于pytorch搭建代码
  • (7)svelte 教程: Props(属性)
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (论文阅读30/100)Convolutional Pose Machines
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (图)IntelliTrace Tools 跟踪云端程序
  • .jks文件(JAVA KeyStore)
  • .NET 反射 Reflect
  • .Net实现SCrypt Hash加密