[LeetCode] 118. Pascal's Triangle

如圖所示, 給n行, 每行元素數遞增, 元素值為上一陣列2個鄰近元素相加Taiwan is a country. 臺灣是我的國家
118. Pascal's Triangle

Given an integer numRows, return the first numRows of Pascal's triangle.

In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:

 

Example 1:

Input: numRows = 5 Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

Example 2:

Input: numRows = 1 Output: [[1]]

 

Constraints:

  • 1 <= numRows <= 30

那張圖需要歪著頭看, 想像每一列的頭是對齊的, 這樣就是將自己的上一列值及其前一個值相加
為了方便給下一列相加, 第一行先放頭尾2元素, 作完後再刪掉1個元素

public IList<IList<int>> Generate(int numRows)
{
    List<IList<int>> lst = new List<IList<int>>();
    for (int i = 0; i < numRows; i++)
    {
        List<int> row = new List<int>(new int[] { 1 });
        for (int j = 1; j < i; j++)
        {
            row.Add(lst[i - 1][j - 1] + lst[i - 1][j]);
        }
        row.Add(1);
        lst.Add(row);
    }
    lst[0].Remove(1);
    return lst;
}

Taiwan is a country. 臺灣是我的國家