剑指Offer-62:圆圈中最后剩下的数字 python

剑指Offer62圆圈最后剩下数字(约瑟夫环) 题目 0,1,2…,n-1这n个数字排成一个圆圈,从数字0开始,每次从这圆圈你删除第m个数字。求出这个圆圈剩下最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次2、0、4、1,因此最后剩下数字是3。 本题就是有名的约瑟夫(Josephuse)环问题。 分析 两种解题方法: 用环形链表模拟圆圈的经典解法 分析每次被删除的数字的规律并直接计算出圆圈最后剩下数字 放码 一 用环形链表模拟圆圈的经典解法 public int las 阅读详情

摘要: 本文讲的是剑指Offer-62:圆圈中最后剩下的数字, 题目: 0、1…n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例子: 如0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除

原文链接:https://blog.csdn.net/jiachen0212/article/details/80435564

# coding=utf-8
# 环形的n个值(0~n1),一直减去第m个数,求最后剩下的数
#5,3
def last_reaining_number(n, m):
    s = [x for x in range(n)]  # 产生等差数列
    p = m - 1
    while len(s) != 1:
        # 这里用while而不是if  因为处理一次后的p可能仍>len(s)-1. 所以必须处理到p值满足list的index条件为止
        while p > len(s) - 1:  # 超过了尾数的index
            # 这个条件要放在最前面,为了防止p一上来就设置的大于len(s)-1, 如last_reaining_number(5, 8)
            p = p - (len(s) - 1) - 1  # -1 减1 是因为index从0计数..
        popnum = s.pop(p)
        print(popnum, p)
        p += (m - 1)
    return s
res = last_reaining_number(5, 3)
# res = last_reaining_number(5, 8)
print("res=",res)

手把手教你用Xilinx Ultrascale+ FPGA解串12-bit ADC的LVDS信号(附Verilog代码) 本文详细介绍了如何使用Xilinx Ultrascale+ FPGA解串12-bit ADC的LVDS信号,涵盖硬件设计、时钟域处理和数据对齐等关键技术。通过Verilog代码实例和调试技巧,帮助工程师解决高速数据采集中的核心挑战,提升系统稳定性和性能。 阅读详情

相关推荐

手把手教你学Simulink——基于经典PID控制的电机系统场景实例:永磁同步电机(PMSM) PID转速控制仿真

*永磁同步电机(PMSM)因其高效、高功率密度和良好的动态响应特性,在现代工业自动化、电动汽车驱动系统等领域得到了广泛应用。为了实现对PMSM的速度精确控制,通常采用矢量控制(Field Oriented Control, FOC)**策略,其中PID控制器是实现速度环和电流环调节的关键组件。本教程将带你使用构建一个基于PID控制的永磁同步电机转速控制系统仿真模型PMSM电机建模矢量控制(FOC)策略实现PID控制器设计系统仿真与调试控制效果分析本文介绍了如何使用构建一个。

MHD0815的博客 6864

python-leetcode-面试题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...

Mr_WoLong 742

广西壮族自治区分级水系矢量数据.rar

共14种水系矢量数据,下边进行简单介绍,括号内是水系矢量文件名称。各级矢量水系(river1【线】、river1【面】、river3以上【线】、river3以上【面】、四级水系【线】、river5【线】);简单明了的水系(河湖【线】、河湖【面】);复杂详细的水系(面状水系【线】、线状水系【面】、osm_水系矢量面【面】、osm_水系中心线【线】、water【线】、water_a【面】)各级水系解释:水系级别是指划分水系支流规模大小和相互关系的等级,一般分为五级。简单明了的水系:该矢量分为面状和现状,与各级水系相比相对复杂,复杂程度处于各级水系和复杂水系之间。复杂详细水系:该数据源于osm,其中水系中心线是通过arcgis工具提取而成,但是在细小的河流上反应不明显,数据来源于网友提供,中心线数据在做图以及水模方面有一定的作用。

剑指Offer 62.圆圈最后剩下数字Python

题目描述 0, 1, …, n-1这n个数字(n>0)排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。 求出这个圆圈剩下最后一个数字。 样例: 输入:n=5 , m=3 输出:3 解题思路 题目是经典的约瑟夫(Josephuse)环问题。 模拟圆圈 用一个数组去模拟圆圈,然后每次在数组中删除第m个元素。 时间复杂度为O(n)O(n)O(n),空间复杂度为O(n)O(n)O...

ChungChinKei' blog 637

Python】【难度:简单】Leetcode 面试题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 来源:力...

thomashhs12的博客 274

剑指 Offer 62. 圆圈最后剩下数字

剑指 Offer 62. 圆圈最后剩下数字】题目描述:示例:解析思路1:代码(python3)代码(cpp) 题目描述: 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/ 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈剩下最后一个数字。 例如,0、1、

是小武呀 464

剑指offer 面试题62 python版+解析:圆圈最后剩下数字

题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.....

Yenpo Ma的博客 425

剑指offer62:圆圈最后剩下数字 python

剑指offer62:圆圈最后剩下数字 python题目描述解法三级目录 题目描述 解法 仿真模拟法,模拟真实情况 利用迭代或者递归,真实模拟该问题 该问题描述的是每次都去掉第m个数字,那么就是pop掉第m%len(nums),其中nums是1,。。。,n-1组成的列表。然后下一轮也是从m%len(nums)开始,因为去除掉了一个数字,后面所有的数字的索引都移动了一位。 class Solution: def lastRemaining(self, n: int, m: int) ->

weixin_43494312的博客 242

剑指offer第二版(Python3)--面试题62 : 圆圈最后剩下数字

0, 1, 2 ,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈剩下最后一个数字

鲁班七号 327

【leetcode-Python-数学-剑指 Offer 62. 圆圈最后剩下数字

题目链接 剑指 Offer 62. 圆圈最后剩下数字 - 力扣(LeetCode) (leetcode-cn.com) 题目描述 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈剩下最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下数字是3。 1=<n<=10^5,1<=m<=10^6。

gulaixiangjuejue的博客 507

剑指offer62: 圆圈最后剩下的数---python

#coding=utf-8 import numpy as np # 环形的n个值(0~n1),一直减去第m个数,求最后剩下的数 def last_reaining_number(n, m): s = [x for x in range(n)] # 产生等差数列 p = m - 1 while len(s) != 1: # 这里用while而不是if ...

jiachen0212的博客 720

python--剑指offer--简单--62. 圆圈最后剩下数字

class Solution: def lastRemaining(self, n: int, m: int) -> int: pos = 0 # 最终活下来那个人的初始位置。最终留下的元素的位置为0 for i in range(2, n + 1): pos = (pos + m) % i # 每次循环右移 return pos if __name__ == '__main__': solut...

Chasing__Dreams的博客 309

剑指offer 62 - 圆圈最后剩下数字 - python

题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一...

Forlogenの解忧杂货铺 426

剑指 Offer 62. 圆圈最后剩下数字 - leetcode 剑指offer系列

题目难度: 简单 原题链接 今天继续更新剑指 offer 系列, 老样子晚上 6 点 45 分准时更新公众号 每日精选算法题, 大家记得关注哦~ 另外在公众号里回复 offer 就能看到剑指 offer 系列当前连载的所有文章了 题目描述 0,1,n-1 这 n 个数字排成一个圆圈,从数字 0 开始,每次从这个圆圈里删除第 m 个数字。求出这个圆圈剩下最后一个数字。 例如,0、1、2、3、4 这 5 个数字组成一个圆圈,从数字 0 开始每次删除第 3 个数字,则删除的前 4 个数字依次是 2.

随便发挥的博客 312

剑指Offer(Python多种思路实现):圆圈最后剩下数字

剑指Offer(Python多种思路实现):圆圈最后剩下数字 面试62题: 题目:圆圈最后剩下数字 题:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈剩下最后一个数字。 解题思路一:约瑟夫环问题。 class Solution: def LastRemaining_Solution(self, n, m):...

weixin_44151089的博客 834

剑指offer-python:64.圆圈最后剩下数字

0, 1, …, n-1这n个数字(n>0)排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈剩下最后一个数字

freedom的博客 486

剑指 Offer 62. 圆圈最后剩下数字-Python题解

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 来源:力扣(LeetCode) 链

AiBigData的博客 411

62-圆圈最后剩下数字

题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求这个圆圈剩下最后一个数字。 def delete_circle_n(head,n): p = head while p!=p.next: i = 0 while i<n: p = p.next...

weixin_30375427的博客 240

剑指offer系列-面试题62. 圆圈最后剩下数字(python)

文章目录1. 题目2. 解题思路2.0 暴力法2.1 数学法3. 代码实现3.0 暴力法3.1 数学法4. 总结5. 参考文献 1. 题目 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈剩下最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下数字是3。 2. 解题思路 这道题是简单,我是万万没想到的。 其实本题是著名的约瑟夫环问题。 2.0 暴力法 就

besmarterbestronger的博客 323

[剑指Offer]:圆圈最后剩下数字

文章目录题目描述题解思路 题目描述 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 题解思路 代码实现: 代码实现:

AngelDg的博客 358

【LeetCode】剑指 Offer 62. 圆圈最后剩下数字(约瑟夫环问题) p300 -- Java Version

剑指 Offer 62. 圆圈最后剩下数字 -- (解题方法:环形链表/模拟链表/数学分析),`0,1,···,n-1` 这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈剩下最后一个数字

汤姆lazy的CSDN博客 890
上一篇: 剑指Offer-题48(C++版):最长不含重复字符的子字符串
下一篇: 剑指offer——表示数值的字符串 C/C++
い哎哟喂〤
博客等级 码龄10年 16粉丝 15原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值