Pascal’s Triangle

,


Problem

Given a non-negative integer numRows, generate the first numRows of Pascal’s triangle.

Example

1
2
3
4
5
6
7
8
9
Input: 5
Output:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

My Answer

  • level이 1일땐 원소가 1 하나 밖에 없는 리스트 이다.
  • level이 2이상일땐 리스트의 앞, 뒤로 1을 넣어 주고 그 사이를 level-1 만큼 돌면서 이전에 추가된 리스트 ( 이번 level의 값)을 참조해서 원소를 추가 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
   public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> res = new ArrayList<>();
        if (numRows == 0) {
            return res;
        }
        res.add(Arrays.asList(1));
        for (int level = 2; level <= numRows; ++level) {
            List<Integer> row = new ArrayList<>();
            row.add(1);
            List<Integer> prevRow = res.get(level-2);
            for (int i = 1; i < level-1; ++i) {
                row.add(prevRow.get(i-1)+prevRow.get(i));
            }
            row.add(1);
            res.add(row);
        }
        return res;
    }
}