银泰百货笔试-前端
算法两个题,
- 给出最长公共子序列的长度的函数,要求空间都复杂度为O(min(m,n)) ,时间复杂度为O(mn)
function lcs(str1,str2){
let dp=new Array(str2.length+1).fill(0)
for(let i=1;i<=str1.length;i++){
let pre=0
for(let j=1;j<=str2.length;j++){
let temp=dp[j]
dp[j]=str1[i-1]==str2[j-1]?pre+1:Math.max(dp[j-1],dp[j])
pre=temp
}
}
return dp[str2.length]
}
- 给出整数数组输出最大值的字符串,如[2,20,23,4,8],输出 '8423220'
function findLargestNumber(nums) {
const sortedNums = nums.map(String).sort((a, b) => {
const option1 = a + b;
const option2 = b + a;
return option2.localeCompare(option1);
});
return sortedNums.join("");
}
const nums1 = [2, 20, 23, 4, 8];
const nums2 = [2, 20, 23, 4, 8, 301, 30, 311, 3];
console.log(findLargestNumber(nums1)); // 输出 '8423220'
console.log(findLargestNumber(nums2)); // 输出 '8433113030123220'
#银泰笔试##笔试算法题##前端#
查看14道真题和解析