圆圈中最后剩下的数字

圆圈中最后剩下的数字(Java实现) 圆圈中最后剩下的数字(Java实现) 题目:0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 示例: 输入: n = 5, m = 3 输出: 3 有名的约瑟夫问题,利用ArrayL... 阅读详情
题目:
0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求这个圆圈里剩下的最后一个数字。

分析:
1.利用环形链表模拟圆圈求解。
2.利用删除之后的规律求解。

环形链表:

class Solution
{
public:
    int LastRemaining_Soultion( int n, int m )
    {
        if ( n <= 0 || m <= 0 )
            return 0;
        list<int> circleList;
        list<int>::iterator circleIter;
        list<int>::iterator nextIter;
        int count = 0;
        for ( int i = 0; i < n; i++ )
        {
            circleList.push_back( i );
        }
        circleIter = circleList.begin();
        while ( circleList.size() > 1 )
        {
            if ( circleIter == circleList.end() )
            {
                circleIter = circleList.begin();
            }
            count++;
            nextIter = ++circleIter;
            if ( count%m == 0 )
            {
                circleList.erase( --circleIter );
            }
            circleIter = nextIter;
        }
        return circleList.front();
    }
};

int main( void )
{
    Solution sos;
    cout << sos.LastRemaining_Soultion( 20, 30 ) << endl;
    return 0;
}

规律:这个看的不是很懂,具体规律推导参考《剑指offer》面试题45:

class Solution
{
public:
    int LastRemaining_Solution( int n, int m )
    {
        if ( n < 1 || m < 1 )
            return -1;

        int last = 0;
        for ( int i = 2; i <= n; i++ )
            last = ( last+m ) % i;
        return last;
    }
};
LeetCode 面试题62. 圆圈中最后剩下的数字 通过数学解法进行逆推,进而解决《面试题62. 圆圈中最后剩下的数字》问题 阅读详情

相关推荐

62. 圆圈中最后剩下的数字

0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。时,最后留下的数字序号一定为。个,最后剩下的是第几个数字。个,最后剩下的是第几个数字。递归求解即可,也可以改成迭代。

qq_42889517的博客 942

3种方法: 圆圈中最后剩下的数字

通过(暴力法、循环、递归)3种方法,得到圆圈中最后剩下的数字...

具身小站 4035

ISP Tuning实战:从零开始调校相机传感器的完整流程(附避坑指南)

本文详细介绍了ISP Tuning的完整实战流程,即如何从零开始调校相机传感器以优化成像质量。内容涵盖从黑电平校正、镜头阴影校正等基础标定,到自动曝光、伽马校正、色彩校正等核心画质调校,再到降噪与锐化的平衡策略,并提供了关键的避坑指南。掌握ISP Tuning是提升相机传感器性能、实现从‘能用’到‘好用’的关键技术。

weixin_32098457的博客 196

leetcode-圆圈中最后剩下的数字

 题目来自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 输出...

JR_Chan的博客 466

从0开始部署基础的AlwaysOn

在这个快餐文化盛行的时代,应该没多少人真的会沉下心来看理论和具体步骤,加上我自己也需要一篇可以扩展的快速搭建环境的指引,所以特别写了这篇文章。 我们在这里要做的事情有以下几个:安装环境。包括虚拟机和网络配置等。安装Windows域、配置必要的账号密码及功能。搭建域环境并进行配置。安装配置Windows Server Failover Cluster(WSFC)。安装SQL Server。配置Alw

MVP黄钊吉(發糞塗牆) 7569

系统盘被 1Panel 撑爆了?一键脚本 3 分钟搞定无损迁移!(1Panel如何快速无损的修改安装目录)

很多用户因默认安装导致 1Panel 面板占满系统盘 😱,本文详解了为何常规快照迁移会失效,并提供了通过**一键自动化脚本**实现无损迁移的完美方案 🛠️。无论你是 NAS 用户还是服务器管理员,都能找到安全扩容的最佳实践。

XiaoqiangClub的博客 1281

[LeedCode]圆圈中最后剩下的数字

圆圈中最后剩下的数字 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 输出...

一杯糖不加咖啡 169

【嵌入式硬件】LAN9253说明书(中文版)

LAN9253是一款2/3端口EtherCAT从站控制器,具有双集成以太网PHY,每个PHY包含一个全双工100 BASE-TX收发器,支持100 Mbps(100 BASE-TX)操作。 LAN 9253支持HP Auto-MDIX,允许使用直接连接或交叉LAN电缆。支持EtherCAT P和信号质量指数PHY诊断。 LAN9253包括一个EtherCAT从站控制器,带有8K字节的双端口存储器(DPRAM)和8个现场总线存储器管理单元(FMMU)。每个FMMU将逻辑地址映射到物

qq_39200110的博客 2532

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

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

一起加油 5989

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7893

【网络与爬虫 61】移动端App爬虫终极指南:Android-iOS应用数据提取黑科技全解析

本文全面解析移动端App爬虫技术,涵盖Android和iOS两大平台的数据提取方法。从基础的网络抓包到高级的代码注入,从自动化测试框架到反调试技术绕过,为开发者提供移动端数据采集的完整解决方案和实战经验。

熵数实验室 3029

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

剑指 Offer 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 <

Qin_酱的博客 253

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2605

剑指Offer对答如流系列 - 圆圈中最后剩下的数字

文章目录面试题62:圆圈中最后剩下的数字一、题目描述二、问题分析三、问题解答 面试题62:圆圈中最后剩下的数字 一、题目描述 0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,从数字0开始每次删除第3个数字,则删除的前四个数字是2 0 4 1 因此最后剩下的数字是3 二、问题分析 思路一: 既然涉及到数据的频繁删...

明月沉江春雾晓 2619

概率的接力:拆解大模型“预测下一个词“的底层逻辑

大模型的智能不在于它拥有了意识,而在于它用纯数学的架构,将人类语言的复杂结构压缩为可计算的向量轨迹与概率接力。当我们不再将其拟人化为"思考者",而是视作高维条件概率引擎时,才能真正驾驭它。预测下一个词,从来不是终点,而是起点。未来的核心竞争力,属于那些能洞察其统计本质、善用其模式生成能力,并以人类理性与事实为锚点的协作者。词元的轨迹终会止步于上下文窗口,但对技术底层的清醒认知,才是跨越幻觉、走向真实智能的基石。

AI浩 332

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

[剑指offer]圆圈中最后剩下的数字

[剑指offer]圆圈中最后剩下的数字 剑指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 限制: 1 <= n <=

何猫七的博客 221

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

剑指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的博客 246

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

圆圈中最后剩下的数字——剑指offer(Java)

/*题目 * 圆圈中最后剩下的数字 (约瑟夫环) * */ /*思路 * 不管第几个 圆圈内都是循环的,求余数就可以 * 注意要点 每次删除一个数,要从删除的下一个数开始 * 所以核心公式 bt + m - 1,以为数次 从0开始 故m-1, * 从删除数下一个 就是bt的位置 ,因为环里删除一个数, ...

阵雨的博客 423

【剑指 Offer 62. 圆圈中最后剩下的数字】亚瑟夫环

剑指 Offer 62. 圆圈中最后剩下的数字 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 解题思路 1、递归 这个问题能够拆解成更小的问题。 设f(n - 1, m) 返回值 x m % n 即为去掉当前这个值之后的第一个位置。 f(n, m) 的返回值等于 m % n + x 等于(m

Janejie_Zhou的博客 299

刷题59— 圆圈中最后剩下的数字

96.圆圈中最后剩下的数字 题目链接 来源:力扣(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、2、3、4这5个...

明媚 171

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

递推公式:   f[1]=0;   f[i]=(f[i-1]+m)%i; (i>1)

m0_51697147的博客 281
上一篇: 京东2015校园招聘笔试编程题
下一篇: 求1+2+....+n
Findway_
博客等级 码龄10年 36粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值