哔哩哔哩前端笔试前两道编程题代码
第一题:台阶走法,可以走1阶或2阶,n阶有多少种走法(斐波那契数列,这里用了非递归的写法)
var len = readline()
var arr = [0, 1, 2, 3],
i = 4;
while (i <= n) {
arr[i] = arr[i - 1] + arr[i - 2];
i++;
}
console.log(arr[n]);
扩展:还有个可以走1阶,2阶,,,n阶,走n阶有多少种走法(共有2^(n-1)中走法)
第二题:找出有序数组(已排序)中和为sum的两个数,复杂度为o(n)
思路:从两端遍历,i=0,j=len-1,如果和小于sum,i++;如果等于记录两个值;如果大于sum,j--;遍历完有两个值的话,输出,没有输出‘notfound’(不是‘not found’哟,没有空格)
var len = readline();
var arr = readline().split(' ');
var sum = readline();
var i = 0,
j = len - 1,
a = 0,
b = 0;
while (i < j) {
var tmp = parseInt(arr[i]) + parseInt(arr[j]);
if (tmp == sum) {
a = arr[i];
b = arr[j];
break;
}
if (tmp > sum) {
j--;
}
if (tmp < sum) {
i++;
}
}
if (a && b) {
console.log(a + ' ' + b);
} else {
console.log('notfound');
}
第一题:台阶走法,可以走1阶或2阶,n阶有多少种走法(斐波那契数列,这里用了非递归的写法)
var len = readline()
var arr = [0, 1, 2, 3],
i = 4;
while (i <= n) {
arr[i] = arr[i - 1] + arr[i - 2];
i++;
}
console.log(arr[n]);
扩展:还有个可以走1阶,2阶,,,n阶,走n阶有多少种走法(共有2^(n-1)中走法)
第二题:找出有序数组(已排序)中和为sum的两个数,复杂度为o(n)
思路:从两端遍历,i=0,j=len-1,如果和小于sum,i++;如果等于记录两个值;如果大于sum,j--;遍历完有两个值的话,输出,没有输出‘notfound’(不是‘not found’哟,没有空格)
var len = readline();
var arr = readline().split(' ');
var sum = readline();
var i = 0,
j = len - 1,
a = 0,
b = 0;
while (i < j) {
var tmp = parseInt(arr[i]) + parseInt(arr[j]);
if (tmp == sum) {
a = arr[i];
b = arr[j];
break;
}
if (tmp > sum) {
j--;
}
if (tmp < sum) {
i++;
}
}
if (a && b) {
console.log(a + ' ' + b);
} else {
console.log('notfound');
}
全部评论
相关推荐
编程界菜鸡:逆天,真有住公司的?

点赞 评论 收藏
分享