2021.10.01 - 105.杨辉三角

1. 题目

在这里插入图片描述

2. 思路

(1) 递归

  • 利用递归得到上一层的结果,根据上一层的结果计算这一层的结果即可。

(2) 模拟法

  • 根据规则从上往下推出每一层的结果即可。

3. 代码

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

public class Test {
    
    
    public static void main(String[] args) {
    
    
    }
}

class Solution {
    
    
    public List<List<Integer>> generate(int numRows) {
    
    
        if (numRows == 1) {
    
    
            return new ArrayList<List<Integer>>() {
    
    {
    
    
                add(new ArrayList<Integer>() {
    
    {
    
    
                    add(1);
                }});
            }};
        }
        List<List<Integer>> res = generate(numRows - 1);
        List<Integer> pre = res.get(res.size() - 1);
        List<Integer> cur = new ArrayList<>();
        cur.add(1);
        for (int i = 1; i < pre.size(); i++) {
    
    
            cur.add(pre.get(i - 1) + pre.get(i));
        }
        cur.add(1);
        res.add(cur);
        return res;
    }
}

class Solution1 {
    
    
    public List<List<Integer>> generate(int numRows) {
    
    
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> cur = new ArrayList<>();
        cur.add(1);
        res.add(cur);
        List<Integer> pre = cur;
        while (numRows > 1) {
    
    
            cur = new ArrayList<>();
            cur.add(1);
            for (int i = 1; i < pre.size(); i++) {
    
    
                cur.add(pre.get(i - 1) + pre.get(i));
            }
            cur.add(1);
            res.add(cur);
            pre = cur;
            numRows--;
        }
        return res;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44021223/article/details/120581318