Python实现杨辉三角(字节实习面试题)
2021-06-29
问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
输入格式
输入包含一个数n。
输出格式
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1
1 1
1 2 1
1 3 3 1
数据规模与约定
1 <= n <= 34。
代码实现
1 def yanghui(): 2 line = [1] 3 while True: 4 yield line 5 line = [1] +[line[i] + line[i+1] for i in range(len(line)-1)]+[1] 6 7 def run(): 8 n = int(input()) 9 flag = 0 10 for i in yanghui(): 11 print(" ".join(str(j) for j in i)) 12 flag += 1 13 if flag == n: 14 break 15 16 17 if __name__ == '__main__': 18 run()
力扣题解法
class Solution: def generate(self, numRows: int) -> List[List[int]]: ret = list() for i in range(numRows): row = list() for j in range(0, i + 1): if j == 0 or j == i: row.append(1) else: row.append(ret[i - 1][j] + ret[i - 1][j - 1]) ret.append(row) return ret
复杂度分析
-
时间复杂度:O(\textit{numRows}^2)O(numRows2)。
-
空间复杂度:O(1)O(1)。不考虑返回值的空间占用。
作者:常cc
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!