# Pascal's Triangle II Problem & Solution

Given an integer `rowIndex`, return the `rowIndex`th (0-indexed) row of the Pascal's triangle. In Pascal's triangle, each number is the sum of the two numbers directly above it.

## C++ Solution

First, we need to treat the edge cases where the `rowIndex` equals 0 or 1. Then, we only need to keep track of the current row and the previous row. There’s no point in keeping track of the entire triangle in memory as there’s no use for it. This saves memory. So, we construct the new row by summing up the inner cells of the previous row, and then we assign the current row to the previous row, and keep going till we calculate the row for the `rowIndex`.

``````#pragma GCC optimize("Ofast")
#pragma GCC optimization("unroll-loops")

static const int _=[](){std::ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);return 0;}();

class Solution {
public:
vector<int> getRow(int rowIndex) {
if (rowIndex == 0) {
return {1};
}

if (rowIndex == 1) {
return {1, 1};
}

vector<int> result(rowIndex, 1);

for (int i = 2; i <= rowIndex; ++i) {
vector<int> tmp(i + 1, 1);
for (int j = 1; j < i; ++j) {
tmp[j] = result[j - 1] + result[j];
}

result = tmp;
}

return result;
}
};
``````