每日一题20201206(118. 杨辉三角)

简介: 杨辉三角

118. 杨辉三角

31.jpg

image.png

思路



如果你非要按照图片里的样子来看的话,会复杂一点,如果你按照这样的格式:
1
11
121
1331
14641
这样会好理解一点,每次要计算的数,都是上一行的同位置索引+上一行的上个位置的值,如果上一行的上个位置或者上一行的同样位置没有值,则只加上有值的部分。


class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        # 防止numRows为0的情况,直接return []
        if numRows == 0:
            return []
        # 为了方便,直接添加第一行数据,这样计算上一行的时候就永远有值
        ans = [[1]]
        # 索引从1开始,是因为上面我们已经加入了一行数据了
        for i in range(1, numRows):
            # result是每一行的数据
            result = []
            # 为什么是i+1,因为我们求的当前行的数据总是比上一行多一个
            for j in range(i+1):
                # 如果j-1 < 0了,那么说明j=0,那么说明上一行没有前一个数,直接加
                # 上上一行的同位置数ans[i-1] 这个是上一行 同位置数是ans[i-1][j]
                if j - 1 < 0:
                    result.append(ans[i-1][j])
                # 如果j超出了上一行的索引范围,那么直接加上上一个的最后一个数
                elif j > len(ans[i-1]) - 1:
                    result.append(ans[i-1][j-1])
                # 否则都在正常范围内,直接加上ans[i-1]的j和j-1
                else:
                    result.append(ans[i-1][j-1]+ans[i-1][j])
            ans.append(result)
        return ans

32.jpg

image.png

类似的写法



下面那种做法把两端固定了1和1,每次只计算中间的内容


class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        result = []
        for n in range(numRows):
            if n == 0:
                result.append([1])
            elif n == 1:
                result.append([1, 1])
            else:
                result.append([1] + [x+result[n-1][i+1] for i, x in enumerate(result[n-1][:-1])] + [1])
        return result




相关文章
|
6月前
|
索引
leetcode-119:杨辉三角 II
leetcode-119:杨辉三角 II
60 0
|
5月前
|
存储 SQL 算法
LeetCode 题目 118:杨辉三角
LeetCode 题目 118:杨辉三角
|
5月前
|
缓存 算法 数据可视化
LeetCode 题目 119:杨辉三角 II
LeetCode 题目 119:杨辉三角 II
【每日一题】4.LeetCode——杨辉三角
【每日一题】4.LeetCode——杨辉三角
|
6月前
leetcode-118:杨辉三角
leetcode-118:杨辉三角
57 0
leetcode:118. 杨辉三角
函数原型:int** generate(int numRows, int* returnSize, int** returnColumnSizes) 参数解析:numRows是指明要求前几行杨辉三角 returnSize是返回指针数组的元素个数 returnColumnSizes是指明杨辉三角每一行有几个元素
67 0
|
存储
每日一题——螺旋矩阵
每日一题——螺旋矩阵
LeetCode每日一题(23)——最大三角形面积
最大三角形面积 1.题目 2.示例 3.思路 4.代码 暴力穷举 凸包
105 0
LeetCode每日一题(23)——最大三角形面积