leetcode-dp-数学归纳法-杨辉三角
  TEZNKK3IfmPf 2023年11月15日 22 0


package dp.generate;

import java.util.ArrayList;
import java.util.List;

/**
 * 118. 杨辉三角
 * 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
 * <p>
 * 在「杨辉三角」中,每个数是它左上方和右上方的数的和。
 * <p>
 * <p>
 * <p>
 * <p>
 * <p>
 * 示例 1:
 * <p>
 * 输入: numRows = 5
 * 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
 * 示例 2:
 * <p>
 * 输入: numRows = 1
 * 输出: [[1]]
 * <p>
 * <p>
 * 提示:
 * <p>
 * 1 <= numRows <= 30
 */
public class generate {
    /**
     * 从(1,1)开始初始化,然后推一下递推公式,简单的数学归纳法
     * @param numRows
     * @return
     */
    public static List<List<Integer>> generate(int numRows) {
        List<List<Integer>> res = new ArrayList<>();
        if (numRows == 0) {
            return res;
        }

        int[][] dp = new int[numRows + 1][numRows + 1];
        for (int i = 1; i <= numRows; i++) {

            dp[i][0] = 1;
            dp[i][i] = 1;

        }

        for (int i = 1; i <= numRows; i++) {
            for (int j = 1; j <= i; j++) {
                dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1];
            }
        }



        for (int i = 1; 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;
    }

    public static void main(String[] args) {
        System.out.println(generate(5));
    }
}


不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   17天前   40   0   0 java
  TEZNKK3IfmPf   2024年05月31日   51   0   0 java
TEZNKK3IfmPf