90. Leetcode 剑指 Offer 62. 圆圈中最后剩下的数字 (动态规划-基础题)
步骤一、确定状态:
确定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. 圆圈中最后剩下的数字 (动态规划-基础题)相关推荐
- 【LeetCode】剑指 Offer 62. 圆圈中最后剩下的数字
[LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字 文章目录 [LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字 一.动态规划 总结 一.动态规划 构建一个长度为 n ...
- java求最后一位不为0的数字_【Java】 剑指offer(62) 圆圈中最后剩下的数字
本文参考自<剑指offer>一书,代码采用Java语言. 题目 0, 1, -, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字 ...
- 【LeetCode笔记】剑指 Offer 62. 圆圈中最后剩下的数字(Java、约瑟夫环、链表)
文章目录 题目描述 思路 & 代码 链表模拟法 数学方法 二刷 题目描述 约瑟夫环!题目可太经典了 说实话还是有点难度的= = 思路 & 代码 链表模拟法 第一想法是用 LinkedL ...
- 打卡系列-剑指 Offer 62. 圆圈中最后剩下的数字
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字 ...
- 约瑟夫环的问题--剑指 Offer 62. 圆圈中最后剩下的数字
class Solution {// f(n, m) = (f(n – 1, m) + m) % npublic int lastRemaining(int n, int m) {return (n ...
- Leetcode 剑指offer 22. 链表中第k个节点 (每日一题 20210716)
输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6. ...
- 剑指offer:圆圈中最后剩下的数
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)
剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) 发布:2021年9月12日12:18:52 问题描述及示例 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每 ...
- LeetCode 面试题62. 圆圈中最后剩下的数字 详细题解
面试题62. 圆圈中最后剩下的数字 难度 简单 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数 ...
最新文章
- 【转】创建不可见的Activity
- 听大佬学长RQY报告有感
- C# TCPClient简单示例
- java 漏洞挖掘_Apache Tika命令注入漏洞挖掘
- ubuntu14.04设置静态IP
- MongoDB数据库简介及安装
- SQL Server舍入功能概述– SQL舍入,上限和下限
- 入我新美大的Java后台开发面试题总结
- centos6.4用cloudera manager安装hadoop2.0.0-cdh4.3.0集群(二)
- 机器学习-模型评估方法sklearn对MINST数据集实现
- SpringBoot上传文件到后端服务器
- 广州图书馆跳转中国知网教程
- vm 无法打开本地文件进行写入
- 线性回归相关系数c语言,线性回归方程和线性相关系数计算实例
- (一)CAD2014+VS2010+ObjectARX2014环境搭建(适用于非常非常小白的人)
- 面阵相机靶面详解and镜头选择andFA镜头视野计算
- 如何创建PostgreSQL 生成列
- python3.6安装步骤-Python 3.6.6安装教程(附安装包) | 我爱分享网
- Token的基本介绍
- 如何解决缓存雪崩、击穿、穿透难题?
热门文章
- mybaitis 通过Mapping 实现多表查询
- 开源应用框架BitAdminCore:更新日志20180605
- 《算法基础》——2.3 求幂运算
- 使用快嘉框架开发项目示例
- windows批量创建用户
- 笨办法学Python——学习笔记1
- outlook邮箱显示一直启动中_Outlook 2016 无法正常启动,显示“正在处理” 然而处理了好几天也没有处理完...
- 构造matlab决策树分类器,Matlab建立逻辑回归,决策树,SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线...
- aes sample java,python-AES加密java解密
- pandas的str函数的一些功能