LeetCode: Pascal's Triangle II Solution

Calculate Pascal's Triangle at a specific row

Approach

Build Pascal's Triangle of rowIndex + 1 rows

Get the last row

Implementation

1var getRow = function (rowIndex) {
2 const numRows = rowIndex + 1
3
4 const res = [[1]]
5
6 for (let rowIndex = 1; rowIndex < numRows; rowIndex++) {
7 const row = Array.from(
8 { length: rowIndex + 1 },
9 (_, elIndex) =>
10 (res[rowIndex - 1][elIndex] || 0) +
11 (res[rowIndex - 1][elIndex - 1] || 0)
12 )
13 res.push(row)
14 }
15
16 return res.pop()
17}

Implementation (O(rowIndex) space)

In-place replacement based on previous state

1i = 1: 1 0 0 0
2i = 2: 1 1 0 0
3i = 3: 1 2 1 0
4i = 4: 1 3 3 1
1var getRow = function (rowIndex) {
2 const numRows = rowIndex + 1
3 const res = Array(numRows).fill(0)
4 res[0] = 1
5
6 for (let i = 1; i < numRows; i++) {
7 for (let j = i; j >= 1; j--) {
8 res[j] += res[j - 1]
9 }
10 }
11
12 return res
13}

Comments

Loading comments...

Next Post

LeetCode: Pascal's Triangle

How to write Pascal Triangle in plain JavaScript

Previous Post

LeetCode: Concatenation of Array

.concat() or spread operator