package LeetCode_118
import java.util.*
/**
* 118. Pascal's Triangle
* https://leetcode.com/problems/pascals-triangle/description/
* Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.
*
* Example:
Input: 5
Output:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
* */
class Solution {
/*
* Time complexity:O(n^2), Space complexity:O(n)
* */
fun generate(numRows: Int): List<List<Int>> {
val result = ArrayList<ArrayList<Int>>()
for (i in 0 until numRows){
val row = ArrayList<Int>()
for(j in 0 until i+1){
if (j==0 || j==i){
//insert 1 into head and tail
row.add(1)
} else {
//the value of current position is from it's top left + top right
row.add(result.get(i - 1).get(j) + result.get(i - 1).get(j - 1))
}
}
result.add(row)
}
return result
}
}