200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 哔哩哔哩校招前端笔试编程题

哔哩哔哩校招前端笔试编程题

时间:2019-04-13 12:49:15

相关推荐

哔哩哔哩校招前端笔试编程题

具体题目要求可参照题目及测试

1. 找出有序数组(从小到大排列)中和为sum的两个数,要求复杂度为O(n),找到一组即可

const readline = require('readline')const rl = readline.createInterface({input: process.stdin,output: process.stdout})// 找出有序数组(从小到大排列)中和为sum的两个数,要求复杂度为O(n),找到一组即可/* 数组长度 5数组 1 3 4 6 8sum 10用二分查找:1. 输入的数组input = ['5', '1 3 4 6 8', '10']2. 对于数组 [1, 3, 4, 6, 8],头部是 i, 尾部是 j3. 第1次先让 arr[i] + arr[j] ==> 1 + 8 = 9 ==> 9 < 10 ==> i++ 4. 第2次让 arr[i] + arr[j] ==> 3 + 8 = 11 ==> 11 > 10 ==> j-- 5. 第3次让 arr[i] + arr[j] ==> 3 + 6 = 9 ==> 9 < 10 ==> i++ 6. 第4次让 arr[i] + arr[j] ==> 4 + 6 = 10 ==> 10 = 10 ==> 4 6 */const input = [] // 输入所有行的数组const maxLine = 3 // 输入3行function solution(input) {// 对input进行处理,拿到数组 arr = [1, 3, 4, 6, 8]const arr = input[1].split(' ').map(item => parseInt(item))// 定义头部指针 i,尾部指针 jlet i = 0let j = arr.length - 1 // 或者是 let j = parseInt(input[0])// 找到输入的 sum const sum = parseInt(input[2]) // 10// 二分查找开始while (i < j) {let res = arr[i] + arr[j]// 找到了if (res === sum) {return `${arr[i]} ${arr[j]}`}// 当 arr[i] + arr[j] > sum 时 , j--if (res > sum) {j--}// 当 arr[i] + arr[j] < sum 时 , i++if (res < sum) {i++}}return 'notfonu' }// 出=处理多行输入rl.on('line',(line) => {input.push(line);if (input.length === maxLine) {console.log(solution(input))rl.close()}})

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

const readline = require('readline')const rl = readline.createInterface({input: process.stdin,output: process.stdout})function solution(step) {step = parseInt(step)function walk(n) {// n为第几节台阶if (n === 1) return 1if (n === 2) return 2if (n === 0) return 0return walk(n-1) + walk(n-2)}return walk(step)}rl.on('line',(line) => {console.log(solution(line))})

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。