字节2018前端笔试

题目如:
在这里插入图片描述
在这里插入图片描述
读题读了挺长时间的…
意思是在第二行的数组中找从第四行第一个数和第二个数之间存不存在第三个数
我刚开始的思路就是进行遍历嘛,直接暴力解法,上代码:
在这里插入图片描述
得了15分,满分25分,原因是对于一部分case超时啦
于是看了下评论部分的讲解,掌握了一种新方法,虽然以前也用过,类似于map(存键值对的数据结构)但是很多面试不支持用ES6。所以只能用数组模拟map
讲解:将喜好值作为数组的下标,把具有相同喜好值位置的下标加到数组中
自己实现了一遍:

        var userNums = parseInt(readline());
        var userLike = [];
        var userLike1 = readline().split(' ');
        for (let i = 0; i < userNums; i++) {
            userLike.push(parseInt(userLike1[i]));
        }
        //构建类似于map的数组
        //arr=[,[0],[1],[2,3], ,[4]]代表值为下标的元素出现在了哪些位置
        var arr = [];
        for (let j = 0; j < userNums; j++) {
            if (arr[userLike[j]] == undefined) {
                arr[userLike[j]] = [];
            }
            arr[userLike[j]].push(j);
        }
        //开始查找
        var zushu = parseInt(readline());
        for (var q = 0; q < zushu; q++) {
            var line = readline().split(' ');
            var l = parseInt(line[0]);
            var r = parseInt(line[1]);
            var k = parseInt(line[2]);
            var res = 0;
            if (arr[k] == undefined) {//注意这里一定不要忘记!很有可能k值在没有出现在原数组中
                print(0);
            } else {
                for (let n = 0; n < arr[k].length; n++) {
                    if (arr[k][n] >= l - 1 && arr[k][n] <= r - 1) {
                        res++;
                    }
                }
                print(res);
            }


        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值