360笔试 探险钥匙开门

小X在一片大陆上探险有一天他发现了一个洞穴洞穴里面有n道门打开每道门都需要对应的钥匙编号为i的钥匙能用于打开第i道门而且只有在打开了第i (i1)道门之后才能打开第i+1道门一开始只能打开第1道门幸运的是小X在外面探索的途中每天都能发现一把能打开这n道门中其中一道门的钥匙每天找完钥匙后他都会去打开所有能打开的门现在给出他每天找到的钥匙编号请问每道门分别在哪一天被打开
输入
第一行包含一个正整数n表示门的数量
接下来一行包含n个正整数a1a2,...,an其中ai表示第i天他找到的钥匙的编号能够打开第ai道门数据保证a1-an为1-n的一个排列
输出
输出一行n个数s1s2,...,sn其中si表示第i道门在第si天被打开

样例:
输入:
5
5 3 1 2 4
输出:
3 4 4 5 5

解法:按照题意模拟即可:先在数组内记下已经获得过钥匙的门,利用指针flag记录目前所在的位置,每天不断开门(每开一个门,输出一个数)直到不能开为止。
function tanxian(n, a) {
    let res = []
    let doors = new Array(n+1).fill(0)  //创建一个6位的全是0的门的集合,表示一开始都没钥匙
    console.log(doors)
    let flag = 1  //待开的第flag道门
    for(let i=0; i<n; i++){ //i是天数
        doors[a[i]] = 1  //第i天找到钥匙,就将第a[i]道门置1
        while(doors[flag] == 1 && flag <= n){  //
            res.push(i+1) 
            flag++        
        }
    }
    return res
}

let n = 5
let a = [5,3,1,2,4]
console.log(tanxian(n,a))



全部评论
今年又考了探险
点赞 回复 分享
发布于 2024-09-03 11:49 辽宁

相关推荐

醉蟀:你不干有的是人干
点赞 评论 收藏
分享
07-17 11:50
门头沟学院 Java
投递腾讯等公司7个岗位
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务