JS刷秋招真题

哔哩哔哩2020校园招聘前端笔试卷(一)
1.找出有序数组(从小到大排列)中和为sum的两个数,要求复杂度为O(n),找到一组即可
求和
输入描述:
第一行:数组长度
第二行:数组各项的值
第三行:sum

输出描述:
若存在,输出和为sum的两个数,以空格分隔;若不存在,输出notfound

输入例子1:
5
1 3 4 6 8
10

输出例子1:
4 6

输入例子2:
5
1 3 4 6 8
13

输出例子2:
notfound

var readline =require("readline");
var rel = readline.createInterface({
    input:process.stdin,
    output:process.stdout
})
let cur=[];
rel.on("line",line=>{
    cur.push(line.trim());
    if(cur.length===3){
        let arr = cur[1].split(' ').map(e=>+e);
        let sum = +cur[2];
        console.log(twoSum(arr,sum));
    }
})
function twoSum(arr,sum) {
    if(arr.length<2){
        return "notfound"
    }
    let str='';
    let left=0;
    let right =arr.length-1;
    while (left<right){
        if((arr[left]+arr[right])<sum){
            left++;
        }
        else if((arr[left]+arr[right])>sum){
            right--;
        }else {
            str+=arr[left]+' '+arr[right];
            return str;
        }
    }
    str='notfound'
    return str;

}

2.[编程题]括号闭合
时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 32M,其他语言64M

判断由"()[]{}"6种括号组成的字符串是否合法

  1. 所有括号必须闭合
  2. 左括号必须在正确的位置闭合

输入描述:
由6种符号组成的字符串

输出描述:
合法则输出"true",不合法输出"false"

输入例子1:
(]

输出例子1:
false

输入例子2:
{[][()()]}

输出例子2:
true

输入例子3:
{([)]}

输出例子3:
false

var readline =require("readline");
var rel = readline.createInterface({
    input:process.stdin,
    output:process.stdout
})
rel.on("line",line=>{
    console.log(isLegal(line));
})
function isLegal(str) {
    if(str.length==0){
        return true;
    }else if(str.length==1){
        return false;
    }
    let stack=[];
    stack.push(str[0]);
    for(let i=1;i<str.length;i++){
        if(stack[stack.length-1]=='{'){
            if(str[i]=='}') {
                stack.pop();
            }else {
                stack.push(str[i]);
            }
        }
        else if(stack[stack.length-1]=='('){
            if(str[i]==')') {
                stack.pop();
            }else {
                stack.push(str[i]);
            }
        }
        else if(stack[stack.length-1]=='['){
            if(str[i]==']') {
                stack.pop();
            }else {
                stack.push(str[i]);
            }
        }
        else {
            stack.push(str[i]);
        }
    }
    if(stack.length===0){
        return true;
    }else {
        return false;
    }

}

3.有n级台阶,每一步可以走1级或2级,问一共有多少种走法

输入描述:
台阶的级数n

输出描述:
走法数量

输入例子1:
2

输出例子1:
2

例子说明1:
走法为1+1或2

var readline =require("readline");
var rel = readline.createInterface({
    input:process.stdin,
    output:process.stdout
})
rel.on("line",line=>{
    let num=parseInt(line);
    console.log(jump(num));
})
function jump(n) {
    if(n==1){
        return 1;
    }
    if(n==2){
        return 2;
    }
    return jump(n-1)+jump(n-2);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值