Python小练习系列 Vol.9:杨辉三角生成(数组构建 + 数学组合)
🧠 Python小练习系列 Vol.9:杨辉三角生成(数组构建 + 数学组合)
🔺 本期我们带来一道简洁却优雅的经典练习 —— 生成杨辉三角,是训练数组操作与组合思想的绝佳题目!
🧩 一、题目描述
给定一个非负整数 numRows
,生成对应的杨辉三角的前 numRows
行。
示例:
输入: numRows = 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
🧠 二、解题思路
杨辉三角的性质:
- 每一行第一个和最后一个数字都是
1
- 中间的数字等于上一行的两个数字之和:
res[i][j] = res[i-1][j-1] + res[i-1][j]
👨💻 三、Python代码实现
def generate(numRows):
res = []
for i in range(numRows):
row = [1] * (i + 1)
for j in range(1, i):
row[j] = res[i-1][j-1] + res[i-1][j]
res.append(row)
return res
📌 四、运行示例
triangle = generate(5)
for row in triangle:
print(row)
输出:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
🧩 五、小结与要点
点 | 说明 |
---|---|
构造方法 | 逐行递推,首尾填 1,中间相加 |
数据结构 | 使用二维数组保存每行结果 |
灵活扩展 | 可以扩展为打印第 k 行、格式化输出等 |
💡 六、进阶拓展
- 🧠 输出杨辉三角的第
k
行? - 📐 用空格对称打印出金字塔形?
- ⏱️ 使用组合数公式
C(n, k)
直接构造一行?
❤️ 结语
杨辉三角背后的组合学原理,蕴藏着数学之美。实现它,不止是代码,更是对模式的观察与表达!
📌 下一期预告:括号插入匹配(表达式构造 + 回溯)
👉 点个赞 👍 + 收藏 🌟,一起来感受代码和数学的浪漫!