剑指offer 面试题62 圆圈中最后剩下的数字

从TTL到RS485:一颗CH342芯片搞定三种串口通信的硬件连接实战 本文详细介绍了CH342芯片在TTL、RS232和RS485三种串口通信模式下的硬件连接实战。通过精选的电路设计示例和配置技巧,展示了CH342在工业控制和智能硬件开发中的灵活应用,帮助开发者高效实现多协议通信,显著提升项目开发效率。 阅读详情

题目描述
每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1)

如果没有小朋友,请返回-1

解法1,使用list 模拟,会超时:

class Solution {
public:
    int LastRemaining_Solution(int n, int m) {
        list<int> mylist;
        for (int i = 0; i < n; i++)
        {
            mylist.push_back(i);
        }
        int count=1;
        auto it=mylist.begin();
        while(mylist.size()>1) {
            if(count==m) {
                count=1;
                it=mylist.erase(it);
            } else {
                it++;
                count++; 
                count%=n;
            }
            if(it==mylist.end()) {
                it=mylist.begin();
            }
        }
        return *(it);
        // return 0;
    }
};

解法2:使用递归公式:
f(i)=(f(i−1)+m)%i

class Solution {
public:
    int LastRemaining_Solution(int n, int m) {
        if(n<=0||m<=0) {
            return -1;   
        }
        int res=0;
        for (int i = 1; i <= n; i++)
        {
            res=(res+m)%i;
        }
        return res;
    }
};

二阶FLL辅助三阶PLL环路的代码解读 今天对GNSS接收机里面的载波跟踪环路代码进行了解读 以下是个人的一点见解 % 载波环第二步:环路滤波器 二阶FLL辅助三阶PLL环路 carrLoopS0 = lastCarrLoopS0 + (phaseErr*tau0PLL + freqErr*tau1FLL) * PDIcarr; carrLoopS1 = lastCarrLoopS1 + (tau1PLL*phaseErr + carrLoopS0 + tau2FLL*freqErr) * PD 阅读详情

相关推荐

达梦DM8整合Seata AT模式实战:手把手教你搞定分布式事务(含源码修改避坑)

本文详细介绍了达梦DM8数据库与Seata AT模式的深度整合实战,包括环境准备、架构设计、源码适配及分布式事务落地。通过独创性源码改造,解决了Seata官方对达梦数据库AT模式支持的限制,为国产数据库在微服务架构中的应用提供了可靠的事务保障。

weixin_30764771的博客 332

面试题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 = 10, m = 17 输出...

weixin_43892514的博客 244

从GWAS到单细胞:利用seismic包精准定位疾病相关的关键细胞亚群与驱动基因

本文详细介绍了如何利用seismic包将GWAS与单细胞测序数据结合,精准定位疾病相关的核心细胞亚群与驱动基因。通过创新的统计算法和实战案例,帮助研究者从遗传汇总数据中挖掘关键生物学机制,提升疾病研究的精准度和效率。

weixin_29215815的博客 441

剑指 Offer(第2版)面试题 62:圆圈中最后剩下的数字

剑指 Offer(第2版)面试题 62:圆圈中最后剩下的数字

ProgramNovice的博客 1302

【从零开始玩量化7】easyTrader: 自动化(程序化)交易利器

前面的文章,我们介绍了数据获取工具AKShare, 量化回测工具backtrader等,这一篇,介绍程序化交易工具easyTrader。作者网名食灯鬼,目前项目在Github上的star数已经有6.7k。这可能是目前,开源能找到的,最好用的程序化交易库了。本文介绍了easyTrader的简单用法,这个包还有很多功能,后续再继续写文章探究。

量化投资助手的博客 1万+

Ego-Planner实战避坑指南:从环境搭建到仿真运行

本文详细介绍了在Windows系统下,通过WSL2搭建Ego-Planner无人机路径规划算法开发环境的完整流程与实战避坑指南。内容涵盖ROS Noetic安装、第三方依赖库(如Ceres Solver)编译冲突解决、Realsense SDK版本降级处理,以及Gazebo仿真与真机调试的常见问题,旨在帮助开发者高效完成环境配置并成功运行仿真。

weixin_29232507的博客 699

剑指Offer45--面试题62. 圆圈中最后剩下的数字

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

zhangyunpeng0922的博客 213

四轮两驱小车(四):STM32驱动5路灰度传感器PID循迹

之前买了一批5路灰度传感器,想用这传感器进行循迹,无奈网上和官方的资料提供的还是比较少,这里还是做一下当初的学习记录。

weixin_51651698的博客 6万+

剑指Offer——面试题62:圆圈中最后剩下的数字

面试题62:圆圈中最后剩下的数字 题目:0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0,1,2,3,4 这5个数字组成一个圆圈,从数字 0 开始每次删除第 3 个数字,则删除的前 4 个数字依次是 2、0、4、1,因此最后剩下的数字是3。(有名的约瑟夫环问题) ????‍????经典的解法,用环形链表模拟圆圈 #incl...

愿你慢慢变强的博客 657

倍福CX9020(WINCE 7)控制器使用方法和操作

CX9020系列是倍福控制器中较为经济的,操作系统为Windows Embedded Compact 7(简称WINCE7或WINEC7),相对高端控制器(WINES7以上系统),操作系统古老而简洁,上位机软件的编写困难很多,本文是笔者在使用过程中摸索的流程,旨在为CX9020系列的新用户提供参考,也可供其他CE系统的控制器参考。本文中大部分截图采用倍福中国的培训文档,这是由于笔者是在流程走通后再写这篇文章,不想再恢复出厂设置走一遍截图。因笔者在写这篇文章时使用倍福控制器经验并不丰富,难免有纰漏,请读者批评

weixin_41883890的博客 4286

基于 Simulink 的双向 DC/AC 逆变器中 IGBT/MOSFET 寄生参数影响分析实战教程

摘要:本教程详细解析了Simulink中IGBT/MOSFET寄生参数对双向DC/AC逆变器的影响。通过对比理想模型与含寄生参数(如20nH内部电感、50nH回路电感)的仿真,揭示了电压尖峰、高频振荡等实际问题。建模步骤包括搭建基准电路、引入寄生参数、配置高精度求解器(步长10ns),并给出抑制措施:添加RC缓冲电路、调整驱动电阻。关键发现:寄生参数会显著增加开关损耗和EMI噪声,需通过参数扫描优化设计。教程还提供了代数环报错、仿真速度优化等实战技巧,帮助工程师从理想仿真过渡到高保真分析。

xiaoheshang_123的博客 68

Java详解剑指offer面试题62--圆圈中最后剩下的数字

Java详解剑指offer面试题62–圆圈中最后剩下的数字 0, 1, 2…,n - 1这n个数字排成一个圆圈,一开始从数字0开始,从这个圆圈里删除第m个数字;然后从被删除的数字后一位开始计数,继续删除第m个数字…重复这个过程,直到最后只剩一个数字为止。求出这个圆圈里剩下的最后一个数字。 用环形链表模拟圆圈 比较直观的思路就是模拟游戏的过程,题目中说到圆圈而且要经常删除元素,因此容易想到用环形链表,但是Java内置的数据结构中没有环形链表,那么只好当遍历到链表末尾时转到链表头部。 举个简单的例子{0,

快乐李同学的博客 708

RK3568-适配phy芯片ip101gri

复位时间查阅数据手册。

Paper_Love的博客 2643

【剑指offer】面试题62 圆圈中最后剩下的数字

题目要求 0,1,…n-1这n个数字排成一个圈,从数字0开始,每次从这个圆圈里删除第m个数字,求这个圆圈里剩下的最后一个数字。 解题分析 书中给出了一个经典的环形链表的解题方法,但是在n数字较大的时候,你会发现,再环中的很多数字都会被多次重复遍历,并且需要一个辅助链表来进行操作。所以,使用环形链表解题经典并不高效。 实际上,这是一个典型的约瑟夫环问题,有关约瑟夫环知识可以参照这篇博客的讲解,讲的很...

爱喝舒化奶的博客 612

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LeetCode | 面试题62. 圆圈中最后剩下的数字【剑指Offer】【Python】

LeetCode 面试题62. 圆圈中最后剩下的数字【剑指Offer】【Easy】【Python】【数学】

Wonz 764

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

《剑指offer》面试题62:圆圈中最后剩下的数字

题目:0,1,2…n-1这n个数字拍成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字,求剩下的最后一个数字。例如0,1,2,3,4这5个数字组成的圈,每次删除第3个数字,一次删除2,0,4,1,因此最后剩下的是3。 思路: 最直接的思路是用环形链表模拟圆圈,通过模拟删除过程,可以得到最后剩下的数字,那么这道题目就变成了删除链表中某一个节点。假设总节点数为n,删除一个节点需要走m步,那么这种...

qq_43502142的博客 327

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【剑指offer】面试题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 = 10, m = 17 输出: 2 限制: 1 <= n <= 10^5 1 <= m <= 10^6

KaelCui的博客 264

剑指offer-面试题 62:圆圈中最后剩下的数字

题目描述: 0, 1, …, n-1这n个数字(n>0)排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。 求出这个圆圈里剩下的最后一个数字。 样例 输入:n=5 , m=3 输出:3 算法: 使用 STL list 类型模拟圆圈。 #include <list> class Solution { public: int lastR...

wchzh2015的博客 204

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

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程 540

剑指offer之面试题62:圆圈中最后剩下的数字

面试题62:圆圈中最后剩下的数字 题目:0,1,…,n-1 这 n 个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 思路1:环形链表 在leetcode上超时了!! 代码实现: package Question62; public class T01 { public static void main(String[] args) { System.out.println(solve(5, 3)); } p

小鑫的博客 179

算法 |《剑指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 <= 10^6 题解: class Solutio

RyanCYK的计算机世界 361

剑指offer - 面试题62: 圆圈中最后剩下的数字 - C++

此题助我进入腾讯的实习,但是当时是参考书上的,今天就来回顾了一下老朋友。欣慰的是这是62题,在腾讯实习提前批笔试之前我就基本刷完了剑指。只要我想做的,就能做好;只要准备了,就比不准备好得多。 书上用的list,主要用了erase()函数和迭代器的知识 class Solution { public: int LastRemaining_Solution(int n, int m) ...

L_bic的博客 308

【剑指offer】面试题62:圆圈中最后剩下的数字【C++版本】

总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】 题目: 圆圈中最后剩下的数字 0,1,……,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里面删除第m个数字。求出这个圆圈里剩下的最后一个数字。 解题思路: 1.使用容器模拟一个环形链表来解答。 可以AC的解法【C++版本】 #include &lt;iostream...

m0_37950361的博客 742

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

qq_43568109的博客 842

面试题62(剑指offer)--圆圈中最后剩下的数字

题目: 0,1,…,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 解法: /** * 约瑟夫环问题: * 长度为n的解可以看作长度为n-1的解加上m之后对n取余 * 即f(n,m)=(f(n-1,m)+m)%n, * f(n-1,m)=(f(n-2,m)+m)%(n-1) * @p...

梧秋的博客 400

剑指offer面试题62(java版):圆圈中最后剩下的数字

welcome to my blog 剑指offer面试题62(java版):圆圈中最后剩下的数字 思路 找到要删除的索引(最麻烦的地方) 通过取模运算更新索引的结果,考虑了已经删除的元素, 所以不能用 删除对应元素 public class Solution { public int LastRemaining_Solution(int n, int m) { ...

littlehaes的博客 2025
上一篇: 剑指offer 面试题12 矩阵中的路径
下一篇: Leetcode 134. 加油站
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值