zoukankan      html  css  js  c++  java
  • 消除游戏

    给定一个从1 到 n 排序的整数列表。
    首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。
    第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。
    我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。
    返回长度为 n 的列表中,最后剩下的数字。

    function lastRemaining(n) {
        let arr = n == 1 ? [1] : new Array(n).fill(0)
        let direction = true
        while(arr.length > 1){
            if(direction){
                for(let i = arr.length - 1;i > -1;i--){
                    if(i % 2 == 0 ){
                        arr.splice(i,1)
                    }else{
                        if(arr[i] == 0){
                            arr[i] = i + 1
                        }
                    }       
                }
            }else{
                let flag = arr.length % 2 == 0 ? true : false
                for(let i = arr.length - 1;i > -1;i--){
                    if(flag){
                        if(i % 2 != 0 ){
                            arr.splice(i,1)
                        }
                    }else{
                        if(i % 2 == 0 ){
                            arr.splice(i,1)
                        } 
                    }
                }
            }
            direction = !direction
        }
        return arr[0]
    };
    

      

  • 相关阅读:
    软件工程第二次作业
    软件工程第一次作业
    5T-时延小结
    4T--5G网络时延
    2T--网络切片
    1T--5G 三大应用场景
    2020软件工程第一次作业
    软件工程最后一次作业
    软件工程第四次作业
    软件工程第三次作业
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13467003.html
Copyright © 2011-2022 走看看