剑指Offer——圆圈中最后剩下的数字(JS实现) |刷题打卡

简介: 剑指Offer——圆圈中最后剩下的数字(JS实现) |刷题打卡

前言

掘金团队号上线,助你 Offer 临门! 点击 查看详情

题目描述

image.png

解题思路

  • 本题属于约瑟夫环问题,属于经典的数学问题
  • 解题的核心思路在于:定义一个下标指针,在于下面的这个式子:
  • head = (head + m - 1)% arr.length;

解题代码

var lastRemaining = function(n, m) {
    let arr = []
    for (let i = 0;i < n;i++) {
        arr.push(i);
    }
    let flag = 0;
    while (arr.length !== 1) {
        flag = (flag + m - 1) % arr.length;
        arr.splice(flag,1);
    }
    return arr[0];
};
作者:Always_positive
链接:https://juejin.cn/post/6948417083923234823
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

总结

  • 本题属于一种数学题。
  • 关键点在于明确什么是约瑟夫环,以及删除第m个元素的下标是多少。
  • 核心公式:head = (head + m - 1)% arr.length
相关文章
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
JavaScript Java 测试技术
基于微信小程序的刷题系统的+springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的刷题系统的+springboot+vue.js附带文章和源代码设计说明文档ppt
270 1
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
110 0
|
JavaScript 前端开发
刷题日常计~JS⑥
刷题日常计~JS⑥
刷题日常计~JS⑥
|
存储 JavaScript 前端开发
刷题日常计~JS⑤
刷题日常计~JS⑤
刷题日常计~JS⑤
|
JavaScript 前端开发
刷题日常计~JS④
刷题日常计~JS④
刷题日常计~JS④
|
JavaScript 前端开发
刷题日常计~JS③
刷题日常计~JS③
刷题日常计~JS③
|
机器学习/深度学习 JavaScript 前端开发
刷题日常计~JS②
刷题日常计~JS②
刷题日常计~JS②
|
存储 JavaScript 前端开发
刷题日常计~JS①
刷题日常计~JS①
刷题日常计~JS①