文章目录

  • 问题描述:
  • 解题思路:
  • 代码实现:

问题描述:

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题 圆圈中最后剩下的数字(约瑟夫问题)相关推荐

  1. 《剑指Offer》62:圆圈中最后剩下的数字(约瑟夫环)

    题目 0,1,2-,n-1这n个数字排成一个圆圈,从数字0开始,每次从这圆圈你删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删除第 ...

  2. 【剑指offer】62、圆圈中最后剩下的数字

    题目 0~n-1这n个数字排成一个圆圈,从0开始,每次删除第m个数字,求出圆圈里剩下的最后一个数字 思路 直接用数组模拟圆圈,模拟删除的过程 class Solution { public:int L ...

  3. 【剑指offer-Java版】45圆圈中最后剩下的数字

    圆圈中最后剩余的数字:约瑟夫环问题 0-n这n个数字排成一圈,从数字零开始每次从这个圆圈中删除第m个数字,求出剩余的最后一个数字 public class _Q45<T> {// 低效的模 ...

  4. 剑指offer:孩子们的游戏(圆圈中最后剩下的数)

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  5. 【剑指offer】面试题62:圆圈中最后剩下的数字(Java)

    0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字 ...

  6. 剑指 offer第12题-矩阵中的路径

    判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向上下左右移动一个格子.如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子. ...

  7. leetcode算法题--圆圈中最后剩下的数字

    原题链接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/ 反推: 人数为1: 0 ...

  8. 【LeetCode】剑指 Offer 62. 圆圈中最后剩下的数字

    [LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字 文章目录 [LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字 一.动态规划 总结 一.动态规划 构建一个长度为 n ...

  9. 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)

    剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) 发布:2021年9月12日12:18:52 问题描述及示例 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每 ...

最新文章

  1. python 全景图像拼接( python3.6 + opencv3.4.2.16) 融合
  2. github pages部署静态网页
  3. getRunningTask API
  4. 转:linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析
  5. 微信小程序支付java视频_【原创】微信小程序支付(普通模式,公众号支付同适用)java后台案例...
  6. 为什么我们对90后的迎合难以成功?
  7. powerbi的功能介绍_Power BI:1分钟快速生成可视化报表
  8. [No0000BC]ADO.NET中的几个主要对象
  9. python爬虫模拟点击下拉菜单和_python+selenium爬虫过程中的模拟点击问题
  10. 翱文中华灯谜大全 v1.1 免费下载--IT man
  11. 有关session安全的那些事儿
  12. Logback-日志文件按日期切分解决方案
  13. 从单机数据库到分布式数据库,从数据库事务到分布式事务
  14. eclipse快捷键介绍
  15. 如何在PC中升级和安装新的图形卡
  16. 180天如何突击高考-从400到550?
  17. jdk,jre,jvm的包含关系
  18. 高级Android开发进阶之路,你需要掌握的几个关键技术!
  19. 基于 python 和 UDP 协议实现简易聊天室(多人群聊)----详细解析带字幕
  20. Android go app 安装包,安卓go系统刷机

热门文章

  1. 大数据主要有什么用,入行大数据,需要学哪个专业?
  2. oracle中rollback命令,9.2.4 执行ROLLBACK命令
  3. 对于编程思想和能力有重大提升的书有哪些?
  4. 随机森林提取sentinel1样本的制作
  5. fedora 笔记本安装_漂亮的超薄笔记本电脑,令Fedora焕发光芒
  6. [Unity Mirror] 作弊与反作弊
  7. python输出数学表达式_python计算数学表达式
  8. IIS应用程序池自动回收
  9. IIS应用程序池标识的权限说明
  10. vue3组合式Composition API之setup函数的具体用法