1. 寒假编程学习实录:从算法到JavaScript的实战思考
这个寒假我给自己定了个小目标:每天至少解决三个编程问题,同时补充JavaScript的基础知识。第一天就选择了几个经典题目——杨辉三角、买卖股票的最佳时机、选课表,还复习了回溯算法和JavaScript的函数特性。这些看似基础的内容,在实际编码中却藏着不少值得深思的细节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 杨辉三角的构建艺术
2.1 二维数组的构建逻辑
杨辉三角的数学规律看似简单——每个数是它上方两数之和。但在代码实现时,需要考虑如何高效地构建这个结构。最直观的方法确实是使用二维数组,但具体实现中有几个关键点需要注意:
javascript复制function generatePascalTriangle(numRows) {
const triangle = [];
for (let i = 0; i < numRows; i++) {
const row = new Array(i + 1).fill(1); // 每行元素数量等于行号+1
for (let j = 1; j < i; j++) {
row[j] = triangle[i-1][j-1] + triangle[i-1][j];
}
triangle.push(row);
}
return triangle;
}
注意:初始化每行时直接填充1可以避免处理边界条件(每行的首尾元素总是1),这是优化代码可读性的小技巧。
2.2 空间复杂度的优化思路
虽然二维数组的实现最直观,但从算法优化的角度,我们可以考虑只用一维数组来解决问题:
javascript复制function generatePascalTriangleOptimized(numRows) {
const result = [];
let prevRow = [];
for (let i = 0; i < numRows; i++) {
const currentRow = new Array(i + 1).fill(1);
for (let j = 1; j <
