游卡前端笔试9.6

9月6日19:00到20:30
90分钟,10道单选,10~15道多选
2道简答题:
1)什么是事件委托
2) ajax, axios, jsonp分别是什么


编程题:
1. 在一堆牌中,把第一张牌放到桌面,再把牌堆的第二张牌放到牌堆底部,然后再把牌堆新的第一张牌放入桌面,以此类推。
最后桌子上牌的顺序是:[1,2,3,4,5,6,14,8,9,10,11,12,13], 原来牌堆的顺序是 [1,12,2,8,3,11,4,9,5,13,6,10,14]
问:
已知桌面上牌的顺序是 [1,2,3,4,5,6,14,8,9,10,11,12,13],求原来牌堆的顺序是什么?

function reverse(arr){
    let len = arr.length;
    
    if (len <= 2) return arr;
    let res = [];
    
    for (let i = len - 1; i >=0; --i) {
        res.unshift(arr[i]);
        if (i == 0) break;
        if (res.length != 1){
            let last = res.pop();
            res.unshift(last);
        }
    }
    return res;
}

2. 已知有一个数组  
[0,2,3,5,7,8,10]
输出:“0,2~3,5,7~8,10”

或者:输入 [0, 2,3,4,5,9, 11,12,13,15]
请输出: “0,2~5,9,11~13,15”

let num = [0,2,3,5,7,8,10]

function simplifyStr( num ) {
    let res ="";

    for (let i = 0; i < num.length; ++i) {
        if ((num[i] + 1) != num[i+1]){
            res+=num[i]+',';
        }else{
            let j = i;
            res+=num[i]+'~';
            while(j < num.length && (num[j]+1) == num[j+1]) j++;
            res+=num[j]+',';
            i = j;
        }
    }
    res = res.substring(0, res.length-1);
    return res;
}

console.log(simplifyStr(num))

#游卡#
全部评论
没hc了
点赞 回复 分享
发布于 2022-10-18 13:30 广东
看了第二题佬的另外一个测试用例,才知道这题目到底要我们干嘛,我麻了。 就它给一个例子,看不出规律啊。
点赞 回复 分享
发布于 2022-10-11 20:48 广东
10.11的笔试,前端算法题和你的一模一样
点赞 回复 分享
发布于 2022-10-11 20:02 江苏
服务端有三个编程题,只a了两道,第二道花了太多时间,估计g了
点赞 回复 分享
发布于 2022-09-06 23:42 湖北

相关推荐

评论
6
18
分享

创作者周榜

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