关注我 么么哒

京东2019春招前端开发类试卷

  • 作者:smile
  • 学无止境
  • 时间:Thu Jun 25 2020 09:58:46 GMT+0800 (China Standard Time)
  • 166人已阅读
简介 京东2019春招前端开发类试卷 编程题

1.拉齐有一个01序列,他可以对这个序列进行任意多次变换,每次变换都是把序列的最后若干个元素放到最前面,例如:010011,将最后3个元素011放到最前面,序列变为011010。所有变换结束后,拉齐需要挑出一个全为1的连续区间,要求最大化区间长度。

输入描述:

共一行,一个01串,仅包含0或1。序列长度不超过50000。

输出描述:

一个整数,表示最长区间的长度。

例子1

输入:

11011

输出:

4

参考代码:

while(line = readline()) {
    let arr = line.match(/1+/g)
    let result = 0
    if (arr !== null){
        arr.forEach(item=>{
            result = Math.max(result,item.toString().length)
        })
    }
    if(result !== line.length) {
        if(line[0] == '1' && line[line.length-1] == '1') {
            result = Math.max(result, arr[0].concat(arr[arr.length-1]).toString().length)
        }
    }
    print(result)
}

2.已知一个奇怪的队列,这个队列中有n个数,初始状态时,顺序是1,2,3,4,…n,是1-n按顺序排列。这个队列只支持一种操作,就是把队列中的第i号元素提前到队首(1<i<=n),如有4个元素,初始为1,2,3,4,可以将3提前到队首,得到3,1,2,4 。  现在给出一个经过若干次操作之后的序列,请你找出这个序列至少是由原序列操作了多少次得到的。

输入描述:

第一行是一个整数n(1<=n<=10^5),表示序列中数字的数量。 接下来一行有n个数,是1-n的一个全排列。数字之间用空格隔开。

输出描述:

输出仅包含一个数字,表示至少操作了几次

例子

输入:

5 5 2 1 3 4

输出:

2

参考代码:

let linNum = 0
while(line = readline()) {
    linNum ++
    arr = line.split(" ")
    let result = 0
    if(linNum === 1) {
        continue
    } else {
        for(let i = arr.length - 1; i > 0 ;i--) {
            if (Math.max(arr[i],arr[i+1]) == arr[i]) {
                result = i+1
                break
            }
        }
        print(result)
    }
}
 

文章评论