步骤一、确定状态:

确定dp数组及含义 dp[i]表示的是i个数里面循环删除m个数剩下的数

步骤二、推断状态方程:

首先假设f(n,m)表示从n个数字0....n−1中每次删除第 m个数字之后剩下的数字。 那么在这n个数字中, 第 一个被删除的是 (m−1)%n,假设这个数用k表示,那 么删除k剩下的n−1个数字0 , 1 , . . k − 1 , k +1 , . . . n − 1 ,并且下一次要从k+1开始计数。那么 我们假设再换成上面那种方式,把k+1映射成0,k+2 映射成1,...那这样这个问题就和上面那个一样了,这 个新问题就变成了从n−1个数字0...n−2中每次删除第 m个数字之后剩下的数字,记这个为f ′ (n−1,m)。注 意这个f ′ 和前面f不是一个函数了,经过了映射。显 然,最初序列最后剩下的数字一定是删除一个数字之 后序列最后剩下的数字,即f(n−1,m)=f ′ (n−1,m)

步骤三、规定初始条件:

初始条件: dp[1]=0

步骤四、计算顺序:

i从2到n遍历

class Solution:def lastRemaining(self, n: int, m: int) -> int:dp = [0] * (n+1)dp[1] = 0for i in range(2, n+1):dp[i] = (m+dp[i-1])%ireturn dp[-1]

90. Leetcode 剑指 Offer 62. 圆圈中最后剩下的数字 (动态规划-基础题)相关推荐

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

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

  2. java求最后一位不为0的数字_【Java】 剑指offer(62) 圆圈中最后剩下的数字

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 0, 1, -, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字 ...

  3. 【LeetCode笔记】剑指 Offer 62. 圆圈中最后剩下的数字(Java、约瑟夫环、链表)

    文章目录 题目描述 思路 & 代码 链表模拟法 数学方法 二刷 题目描述 约瑟夫环!题目可太经典了 说实话还是有点难度的= = 思路 & 代码 链表模拟法 第一想法是用 LinkedL ...

  4. 打卡系列-剑指 Offer 62. 圆圈中最后剩下的数字

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

  5. 约瑟夫环的问题--剑指 Offer 62. 圆圈中最后剩下的数字

    class Solution {// f(n, m) = (f(n – 1, m) + m) % npublic int lastRemaining(int n, int m) {return (n ...

  6. Leetcode 剑指offer 22. 链表中第k个节点 (每日一题 20210716)

    输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6. ...

  7. 剑指offer:圆圈中最后剩下的数

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

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

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

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

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

最新文章

  1. 【转】创建不可见的Activity
  2. 听大佬学长RQY报告有感
  3. C# TCPClient简单示例
  4. java 漏洞挖掘_Apache Tika命令注入漏洞挖掘
  5. ubuntu14.04设置静态IP
  6. MongoDB数据库简介及安装
  7. SQL Server舍入功能概述– SQL舍入,上限和下限
  8. 入我新美大的Java后台开发面试题总结
  9. centos6.4用cloudera manager安装hadoop2.0.0-cdh4.3.0集群(二)
  10. 机器学习-模型评估方法sklearn对MINST数据集实现
  11. SpringBoot上传文件到后端服务器
  12. 广州图书馆跳转中国知网教程
  13. vm 无法打开本地文件进行写入
  14. 线性回归相关系数c语言,线性回归方程和线性相关系数计算实例
  15. (一)CAD2014+VS2010+ObjectARX2014环境搭建(适用于非常非常小白的人)
  16. 面阵相机靶面详解and镜头选择andFA镜头视野计算
  17. 如何创建PostgreSQL 生成列
  18. python3.6安装步骤-Python 3.6.6安装教程(附安装包) | 我爱分享网
  19. Token的基本介绍
  20. 如何解决缓存雪崩、击穿、穿透难题?

热门文章

  1. mybaitis 通过Mapping 实现多表查询
  2. 开源应用框架BitAdminCore:更新日志20180605
  3. 《算法基础》——2.3 求幂运算
  4. 使用快嘉框架开发项目示例
  5. windows批量创建用户
  6. 笨办法学Python——学习笔记1
  7. outlook邮箱显示一直启动中_Outlook 2016 无法正常启动,显示“正在处理” 然而处理了好几天也没有处理完...
  8. 构造matlab决策树分类器,Matlab建立逻辑回归,决策树,SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线...
  9. aes sample java,python-AES加密java解密
  10. pandas的str函数的一些功能