zoukankan      html  css  js  c++  java
  • 刷题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个数字组成一个圆圈,从数字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. 删除元素的位置的公式:temp = (temp+m-1) % num.length;
    2. 删除元素方法:splice();

    题目分析

    1. 根据n,写出数组num;
    2. 删除元素的位置的公式:temp = (temp+m-1) % num.length;
    3. 删除元素方法:splice();
    /**
     * @param {number} n
     * @param {number} m
     * @return {number}
     */
    var lastRemaining = function(n, m) {
        let num = [];
        for(let i=0;i<n;i++){
            num.push(i);
        }
        let temp = 0;
        while(num.length !== 1){
            temp = (temp+m-1) % num.length;
            num.splice(temp,1);   
        }
        return num;
    };
    

      

  • 相关阅读:
    SQL优化大全
    程序的装入和链接
    Linux系统管理常用命令
    作业、进程、线程
    MySQL优化大全
    Linux系统结构 详解
    NoSQL数据库探讨
    操作系统内存管理——分区、页式、段式管理
    进程调度算法
    操作系统文件管理
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12598544.html
Copyright © 2011-2022 走看看