剑指Offer - 面试题62. 圆圈中最后剩下的数字(约瑟夫环 递推公式)
1. 题目
0,1,…,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。
示例 1:
输入: n = 5, m = 3
输出: 3示例 2:
输入: n = 10, m = 17
输出: 2限制:
1 <= n <= 10^5
1 <= m <= 10^6
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
还有 5727. 找出游戏的获胜者 https://leetcode-cn.com/problems/find-the-winner-of-the-circular-game/
我的博客 链表: 约瑟夫环问题
2. 解题
类似题目:LeetCode 390. 消除游戏(类似约瑟夫环,找映射规律)
2.1 数组模拟超时
极限数据下,超时了
class Solution {public:int lastRemaining(int n, int m) {vector<int> num(n);int i;for(i = 0; i < n; i++)num[i] = i;i = 0;while(num.size() != 1){i = (i+m-1)%num.size();num.erase(num.begin()+i);//不断的删除}return num[0];}
};
2.2 公式法
参考别人的解法
- f(people,num)f(people,num)f(people,num) 表示在有people个人时,报数为num,胜利的人的位置
- people = 1 时, pos = 0
- pos=f(people,num)=(f(people−1,num)+num)%peoplepos = f(people,num) = (f(people-1,num)+num)\% peoplepos=f(people,num)=(f(people−1,num)+num)%people
class Solution {public:int lastRemaining(int n, int m) {int pos = 0;//1个人时for(int i = 2; i <= n; i++){ //i表示人数pos = (pos+m)%i;}return pos;}
};
剑指Offer - 面试题62. 圆圈中最后剩下的数字(约瑟夫环 递推公式)相关推荐
- 剑指offer 面试题62. 圆圈中最后剩下的数字
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字 ...
- 面试题62. 圆圈中最后剩下的数字
面试题62. 圆圈中最后剩下的数字 思路:f(n,m) = (f(n-1,m)+m)%n.约瑟夫问题 写法1 class Solution { public:int lastRemaining(int ...
- LeetCode 面试题62. 圆圈中最后剩下的数字 详细题解
面试题62. 圆圈中最后剩下的数字 难度 简单 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数 ...
- leetcode 面试题62. 圆圈中最后剩下的数字
面试题62. 圆圈中最后剩下的数字 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个 ...
- 【剑指offer-Java版】45圆圈中最后剩下的数字
圆圈中最后剩余的数字:约瑟夫环问题 0-n这n个数字排成一圈,从数字零开始每次从这个圆圈中删除第m个数字,求出剩余的最后一个数字 public class _Q45<T> {// 低效的模 ...
- leetcode —— 面试题62. 圆圈中最后剩下的数字
0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字, ...
- 剑指offer:孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- 【LeetCode】剑指 Offer 62. 圆圈中最后剩下的数字
[LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字 文章目录 [LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字 一.动态规划 总结 一.动态规划 构建一个长度为 n ...
- 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)
剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) 发布:2021年9月12日12:18:52 问题描述及示例 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每 ...
最新文章
- 作为前端开发兼任产品专员是一种咋样的体验
- FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析
- scikit-learn 梯度提升树(GBDT)调参小结
- GridView导出Execl
- PHP 8 中确认支持 JIT!
- div 多列等高对齐
- 编译OpenJDK12:atomic.hpp: fatal error C1189: size_t is not WORD_SIZE(换了VS2017编译)
- javaweb不同用户登录不同页面的页面_ssh+mysql实现的Java web论坛系统源码附带视频指导运行教程...
- Google 展示广告
- Commit cannot be completed since the group has already rebalanced and assign
- CS224d-Day 2:TensorFlow 入门
- JavaScript之堆栈溢出
- LCD vs LED vs OLED
- 图像融合(Image Fusion)简介
- Linux查看目录大小文件大小内存大小硬盘大小
- 计算机二级Java考试笔记
- python发明家_Python版多图表范例
- OCR技术系列之一 字符识别技术总览
- 初学 STM32 (从 51 过度到 STM32 ,初学 STM32 必须了解的知识)
- zabbix自定义监控项-统计AP在线、离线数量(AC:H3C WX5540H)
热门文章
- redis配置主从没效果_跟我一起学Redis之加个哨兵让主从复制更加高可用
- usg6000v 无法ping通_柯美复印机网络打印无响应?无法打印、扫描?原来这里出了问题...
- linux中timer的作用,linux - linux / timer.h setup_timer()到期功能不起作用? - 堆栈内存溢出...
- 假定Csomething是一个类,执行下面这些语句后,内存里创建了几个Csomething对象
- 第三季1:ORTP库的移植与局域网视频传输
- 驱动框架7——使用gpiolib完成led驱动
- uboot源码——内核启动分析
- caffe运行训练脚本时报错:Unknown bottom blob 'data' (layer 'conv1',bottom index 0)
- 2017模拟赛:还款计算
- 在线生成大全(这里真的什么都有)