zoukankan      html  css  js  c++  java
  • 每日一题20201206(118. 杨辉三角)

    118. 杨辉三角

    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
    
    

    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
    
  • 相关阅读:
    一步一步写平衡二叉树(AVL树)
    sql关键字
    Remoting技术的应用
    算法:最大公约数
    算法冒泡排序
    C#编码好习惯
    利用VB.Net编程实现PC与掌上电脑PPC间的双向通信
    .Net Remoting与Server 对象详解
    算法迭代和递归
    SQL关键字系列之:minus与intersect
  • 原文地址:https://www.cnblogs.com/we8fans/p/14092797.html
Copyright © 2011-2022 走看看