C/C++教程

每日leetcode-数组-118. 杨辉三角

本文主要是介绍每日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

 

这篇关于每日leetcode-数组-118. 杨辉三角的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!