LeetCode:剑指 Offer 62. 圆圈中最后剩下的数字
发布日期:2022-09-10 02:24:52
浏览次数:8
分类:技术文章
本文共 660 字,大约阅读时间需要 2 分钟。
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
解题思路
1.经典约瑟夫环问题,递推公式为:f(n) = (f(n - 1) + m) % n
2.根据规律可以发现,最后剩下的数字(假设为X)的位置向左移动了 m 位,也就是减少了 m,所以逆推 X 的位置时就要加上 m 就是公式中的 f(n) = (f(n - 1) + m) % n 3.注意:n 是会随着个数的变化而改变,当 + m 后超过当前的总个数 n 时,需要回到队头重新计数,即需要进行取模运算代码
/** * @param {number} n * @param {number} m * @return {number} */var lastRemaining = function(n, m) { let res = 0; for(let i = 2; i <= n; i++){ res = (res + m) % i; } return res;};
转载地址:https://blog.csdn.net/Bertil/article/details/124715818 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月06日 12时44分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
nyoj880还是打印菱形
2019-04-26
第八届蓝桥杯第4题:方格分割
2019-04-26
nyoj608畅通工程
2019-04-26
解决linux下mysql忘记密码的情况
2019-04-26
nyoj1101Oh, my God!错排公式
2019-04-26
nyoj动物统计字典树
2019-04-26
操作系统模拟生产者消费者问题
2019-04-26
JavaWeb的
2019-04-26
如何用JAVA爬取AJAX加载后的页面
2019-04-26
6重常用的排序算法代码
2019-04-26
VUE CLI 4.x v-for 图片不显示解决方法
2019-04-26
VUE CLI 4.x 打包成APP后白屏解决办法&&打包APP教程
2019-04-26
解决Vue history模式下路由跳转时页面404问题
2019-04-26
Vue项目页面跳转时,窗口上方显示进度条(Vue使用NProgress)
2019-04-26
Vue+axios下载文件
2019-04-26
Element UI table宽度自适应
2019-04-26
Vue引入ECharts图表
2019-04-26
Vue watch监听数据 ECharts异步加载数据
2019-04-26
Vue 3.0引入axios
2019-04-26
网页自动适配 Mac 的 Dark Mode
2019-04-26