Pascal's Triangle II

easy array dp

Problem

Return row rowIndex (0-indexed) of Pascal's triangle using O(rowIndex) extra space.

InputrowIndex = 3
Output[1, 3, 3, 1]
Updating in place right-to-left lets row[j] use both still-untouched values from the previous row.

def getRow(rowIndex):
    row = [1] * (rowIndex + 1)
    for i in range(1, rowIndex + 1):
        for j in range(i - 1, 0, -1):
            row[j] = row[j] + row[j - 1]
    return row
function getRow(rowIndex) {
  const row = new Array(rowIndex + 1).fill(1);
  for (let i = 1; i <= rowIndex; i++) {
    for (let j = i - 1; j > 0; j--) {
      row[j] = row[j] + row[j - 1];
    }
  }
  return row;
}
class Solution {
    public List<Integer> getRow(int rowIndex) {
        Integer[] row = new Integer[rowIndex + 1];
        Arrays.fill(row, 1);
        for (int i = 1; i <= rowIndex; i++) {
            for (int j = i - 1; j > 0; j--) {
                row[j] = row[j] + row[j - 1];
            }
        }
        return Arrays.asList(row);
    }
}
class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<int> row(rowIndex + 1, 1);
        for (int i = 1; i <= rowIndex; i++) {
            for (int j = i - 1; j > 0; j--) {
                row[j] = row[j] + row[j - 1];
            }
        }
        return row;
    }
};
Time: O(k²) Space: O(k)