zoukankan      html  css  js  c++  java
  • 每日leetcode-数组-118. 杨辉三角

    分类:二维数组及滚动数组

    题目描述:

    给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

    在杨辉三角中,每个数是它左上方和右上方的数的和。

    解题思路1:

    在杨辉三角中,每个数是它左上方和右上方的数的和。
    题目给的这一句话提示就够了。稍微麻烦的是要考虑头尾为1的情况
    那不如根据行创建对应全1的列表,然后在根据非边缘的值进行公式套用

    class Solution:
        def generate(self, numRows: int) -> List[List[int]]:
            # 根据行创建对应全1的列表,然后在根据非边缘的值进行公式套用
            ret = []
            for i in range(1,numRows+1):
                temp = [1 for i in range(i)]
                for j in range (1,len(temp)-1):
                    # 这里注意是 i-2
                    temp[j] = ret[i-2][j-1]+ret[i-2][j]
                ret.append(temp)
            return ret

    解题思路2:

    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
  • 相关阅读:
    async/await的一些用法
    软件须把握两个点: 错误可控, 复杂度可控
    C++内存管理原则
    *复赛前提醒
    一些好用的网站
    NOIP真题汇总
    信息学中的一些些数论
    [Luogu 1052] noip 05 过河
    浅谈概率期望动态规划
    [Luogu 1312] noip11 Mayan游戏
  • 原文地址:https://www.cnblogs.com/LLLLgR/p/14729976.html
Copyright © 2011-2022 走看看