杨辉三角-leetcode

题目描述

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

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

img

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1
输出: [[1]]

提示:

  • 1 <= numRows <= 30

解法一

思路:

动态规划方法,状态转移方程dp[i][j]=dp[i-1][j-1]+dp[i-1][j]

代码:

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> res = new ArrayList<>();
        int[][] dp=new int[numRows][numRows];
        for(int i=0;i<numRows;i++){
            dp[i][i]=1;
            dp[i][0]=1;
        }
        for(int i=1;i<numRows;i++){
            for(int j=1;j<numRows;j++){
                dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
            }
            
        }
        for(int i=0;i<numRows;i++){
            List<Integer> list = new ArrayList<>();
            for(int j=0;j<=i;j++){
                list.add(dp[i][j]);
            }
            res.add(list);
        }
        return res;
    }
}
posted @ 2026-04-07 16:01  狐狸胡兔  阅读(5)  评论(0)    收藏  举报