哔哩哔哩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种括号组成的字符串是否合法
- 所有括号必须闭合
- 左括号必须在正确的位置闭合
输入描述:
由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);
}