Leetcode118.楊輝三角
阿新 • • 發佈:2021-09-22
Leetcode118.楊輝三角
題目描述
/**
*
* 給定一個非負整數 numRows,生成「楊輝三角」的前 numRows 行。
* <p>
* 在「楊輝三角」中,每個數是它左上方和右上方的數的和。
*/
思路分析
- 楊輝三角,即每一層的第一個數字和最後一個數字都為1,其他數字為上一層兩數字之和
- 基於上述規律,使用兩層迴圈生成楊輝三角每一層的數字
- 外層迴圈控制生成每一層數字,內層迴圈用於生成每一層具體的數字
- 使用集合儲存每一層的關係,具體生成方法見原始碼
- 原始碼見下
原始碼及分析
/** * * @param numRows 指定行數 * @return 返回生成的楊輝三角 */ public List<List<Integer>> generate(int numRows) { //定義儲存集合的集合用於儲存楊輝三角 List<List<Integer>> res = new ArrayList<>(); //外層迴圈控制總共生成多少層 for (int i = 0; i < numRows; i++) { //使用集合儲存每層的數字 ArrayList<Integer> level = new ArrayList<>(); //內層迴圈生成每層的數字 for (int j = 0; j <= i; j++) { if (j == 0 || j == i) { level.add(1); } else { //當前層當前數字等於上一層兩數字之和 level.add(res.get(i - 1).get(j - 1) + res.get(i - 1).get(j)); } } res.add(level); } return res; }