面试题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
由题目可知,每次删除一个元素之后,我们需要从下一个元素重新编号,并且我们的编号是成环的。 由“成环”这句话,我想到了使用模运算。
约瑟夫环是一个经典的数学问题,我们不难发现这样的依次报数,似乎有规律可循。为了方便导出递推式,我们重新定义一下题目。
问题: N个人编号为1,2,……,N,依次报数,每报到M时,杀掉那个人,求最后胜利者的编号。

这边我们先把结论抛出了。之后带领大家一步一步的理解这个公式是什么来的。

python【力扣LeetCode算法题库】面试题62- 圆圈中最后剩下的数字(约瑟夫环)相关推荐

  1. LeetCode 面试题62. 圆圈中最后剩下的数字 详细题解

    面试题62. 圆圈中最后剩下的数字 难度 简单 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数 ...

  2. leetcode 面试题62. 圆圈中最后剩下的数字

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

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

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

  4. python【力扣LeetCode算法题库】220-存在重复元素 III

    给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ. 示例 1: 输入: ...

  5. python【力扣LeetCode算法题库】219 -存在重复元素 II

    给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...

  6. python【力扣LeetCode算法题库】217-存在重复元素

    给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] 输出: true ...

  7. python【力扣LeetCode算法题库】257- 二叉树的所有路径

    给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / 2 3 5 输出: ["1->2->5", &quo ...

  8. python【力扣LeetCode算法题库】10-正则表达式匹配

    给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 ...

  9. leetcode —— 面试题62. 圆圈中最后剩下的数字

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

  10. python【力扣LeetCode算法题库】136-只出现一次的数字

    只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 ...

最新文章

  1. ViSP安装之Windows系统基于VS2019编译器编译获得VISP动态库
  2. python后端开发工程师面试题
  3. boost::remove相关的测试程序
  4. pdo 封装增删改查类
  5. nginx php fpm 日志,nginx下php-fpm不记录php报错日志怎么办?
  6. mongo04---基本查询
  7. django,form表单,数据库增删改查
  8. 因为简单!我的第一本算法书,就被女友抢走了……
  9. DateTime字段控件值显示短格式的做法
  10. JAVA面向对象的总结(类的创建与成员局部变量的对比)
  11. Win10 不火不行!Edge 无缝兼容 Chrome扩展
  12. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_7_Stream流中的常用方法_limit...
  13. 639. 解码方法 2
  14. Proteus 8.12 仿真软件安装(Proteus8.6Proteus8.14下载)
  15. html在线考试系统论文,在线考试系统
  16. IBM面试题:海盗分金算法及其思想
  17. ACL 2020 | 香侬科技提出用Dice Loss缓解数据集数据不平衡问题
  18. 手机端搜狗输入法语音转文字的体验报告
  19. 关于AD17 原理图设置差分出现Number of nets in differential pair ** is 1 instead of 2的问题
  20. 手把手教你使用 Java 在线生成 pdf 文档

热门文章

  1. cannot import name ‘izip‘ from ‘itertools‘
  2. 3rd_party/flatbuffers/tmp/flatc: No such file or directory
  3. TP-GAN 侧脸修复
  4. MobileNet 笔记
  5. 我的csdnmark
  6. 龙格-库塔(Runge-Kutta)方法数学原理及实现
  7. OSError: exception: access violation writing and reading
  8. ubuntu安装vmware(支持mac)与卸载
  9. OpenCV 特征点检测与图像匹配
  10. 190空难_印度空难有确诊者罹难,22名现场搜救人员惨中招