- 选择 7 道 21 分
- 不定项 5 道 30 分
- 填空 2 道 多少分来着
- 问答 2 道 不记得了
- 编程题 3 道 easy easy middle 水平,核心代码模式,总码量不到 40 行 - -
20 分钟写完编程就交卷出来玩了,啧
# 问答 - 2 get 函数实现
笔试完,用 copilot 补全出来了
乐
let obj = {a:[{b: {c: 1}}]} | |
// console.log(obj.a[0].b.c) | |
function get(obj, str) { | |
str = str.split('.') | |
let len = str.length | |
for(let i = 0; i < len; ++i) { | |
if(str[i] && str[i].indexOf('[') != -1) { | |
let index = str[i].match(/\[(\d+)\]/)[1] | |
let name = str[i].split('[')[0] | |
if(name in obj) { | |
obj = obj[name][index] | |
} else { | |
return undefined | |
} | |
} else if(str[i] in obj && obj[str[i]]) { | |
obj = obj[str[i]] | |
} else { | |
return undefined | |
} | |
} | |
return obj | |
} | |
console.log(get(obj, 'a[0].b.c')) | |
console.log(get(obj, 'a[0].b.s')) | |
console.log(get(obj, 'a.s.q')) |
# 编程题 - 1 斐波那契
斐波那契,一行秒return n == 0 || n == 1? n: fib(n-1)+fib(n-2)
# 编程题 - 2 括号匹配
秒,栈就行了,* 号直接忽略
/** | |
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 | |
* | |
* | |
* @param str string 字符串 输入字符串 | |
* @return bool 布尔型 | |
*/ | |
function isVerified( str ) { | |
// write code here | |
let len = str.length | |
let s = [] | |
for(let i = 0; i < len; ++i) { | |
if(str[i] == '*') continue | |
if(str[i] == '{' || str[i] == '[' || str[i] == '(') { | |
s.push(str[i]) | |
} else { | |
let top = s[s.length-1] | |
if((str[i] == '}' && top == '{') || (str[i] == ']' && top == '[') | |
|| (str[i] == ')' && top == '(')) { | |
s.pop() | |
} | |
} | |
} | |
return s.length == 0 | |
} | |
module.exports = { | |
isVerified : isVerified | |
}; |
# 编程题 - 3 最长递增子序列长度
做烂了都,dp 就完事了
dp[i]
表示0~i
中最长递增子序列长度,每次在0
到i-1
中找可以与当前i
构成递增序列的j
,取其中最大的那个作为dp[i]
/** | |
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 | |
* | |
* | |
* @param arr int 整型一维数组 数组 | |
* @return int 整型 | |
*/ | |
function lengthOfLis( arr ) { | |
// write code here | |
let len = arr.length | |
let dp = new Array(len).fill(1) | |
dp[0] = 1; | |
for(let i = 1; i < len; ++i) { | |
for(let j = 0; j < i; ++j) { | |
if(arr[i] > arr[j]) dp[i] = Math.max(dp[j]+1, dp[i]) | |
} | |
} | |
return dp[len-1] | |
} | |
module.exports = { | |
lengthOfLis : lengthOfLis | |
}; | |
// 求数组最长递增子序列长度 |