剑指offer第62题 圆圈中最后剩下的数字(约瑟夫问题)
文章目录
- 问题描述:
- 解题思路:
- 代码实现:
问题描述:
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
解题思路:
如果用链表进行模拟会超时,这题需要用到约瑟夫问题的知识;最终结论是一个公式:
f(n, m) = (m % n + x) % n = (m + x) % n
推导过程参考文章:
约瑟夫问题
代码实现:
public int lastRemaining2(int n, int m) {int ans = 0;// 最后一轮剩下2个人,所以从2开始反推for (int i = 2; i <= n; i++) {ans = (ans + m) % i;}return ans;
}
提交结果:
剑指offer第62题 圆圈中最后剩下的数字(约瑟夫问题)相关推荐
- 《剑指Offer》62:圆圈中最后剩下的数字(约瑟夫环)
题目 0,1,2-,n-1这n个数字排成一个圆圈,从数字0开始,每次从这圆圈你删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删除第 ...
- 【剑指offer】62、圆圈中最后剩下的数字
题目 0~n-1这n个数字排成一个圆圈,从0开始,每次删除第m个数字,求出圆圈里剩下的最后一个数字 思路 直接用数组模拟圆圈,模拟删除的过程 class Solution { public:int L ...
- 【剑指offer-Java版】45圆圈中最后剩下的数字
圆圈中最后剩余的数字:约瑟夫环问题 0-n这n个数字排成一圈,从数字零开始每次从这个圆圈中删除第m个数字,求出剩余的最后一个数字 public class _Q45<T> {// 低效的模 ...
- 剑指offer:孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- 【剑指offer】面试题62:圆圈中最后剩下的数字(Java)
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字 ...
- 剑指 offer第12题-矩阵中的路径
判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向上下左右移动一个格子.如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子. ...
- leetcode算法题--圆圈中最后剩下的数字
原题链接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/ 反推: 人数为1: 0 ...
- 【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开始,每 ...
最新文章
- python 全景图像拼接( python3.6 + opencv3.4.2.16) 融合
- github pages部署静态网页
- getRunningTask API
- 转:linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析
- 微信小程序支付java视频_【原创】微信小程序支付(普通模式,公众号支付同适用)java后台案例...
- 为什么我们对90后的迎合难以成功?
- powerbi的功能介绍_Power BI:1分钟快速生成可视化报表
- [No0000BC]ADO.NET中的几个主要对象
- python爬虫模拟点击下拉菜单和_python+selenium爬虫过程中的模拟点击问题
- 翱文中华灯谜大全 v1.1 免费下载--IT man
- 有关session安全的那些事儿
- Logback-日志文件按日期切分解决方案
- 从单机数据库到分布式数据库,从数据库事务到分布式事务
- eclipse快捷键介绍
- 如何在PC中升级和安装新的图形卡
- 180天如何突击高考-从400到550?
- jdk,jre,jvm的包含关系
- 高级Android开发进阶之路,你需要掌握的几个关键技术!
- 基于 python 和 UDP 协议实现简易聊天室(多人群聊)----详细解析带字幕
- Android go app 安装包,安卓go系统刷机
热门文章
- 大数据主要有什么用,入行大数据,需要学哪个专业?
- oracle中rollback命令,9.2.4 执行ROLLBACK命令
- 对于编程思想和能力有重大提升的书有哪些?
- 随机森林提取sentinel1样本的制作
- fedora 笔记本安装_漂亮的超薄笔记本电脑,令Fedora焕发光芒
- [Unity Mirror] 作弊与反作弊
- python输出数学表达式_python计算数学表达式
- IIS应用程序池自动回收
- IIS应用程序池标识的权限说明
- vue3组合式Composition API之setup函数的具体用法