class Solution { int getN(const vector &previousRow, int n) { if (n == 0 || n == previousRow.size()) { return 1; } return previousRow[n - 1] + previousRow[n]; } public: vector> generate(int numRows) { if (numRows <= 0) { return {}; } vector> result{vector{1}}; for (auto i = 2; i <= numRows; i++) { auto &previous = result.back(); vector current; for (auto j = 0; j < i; j++) { current.push_back(getN(previous, j)); } result.push_back(move(current)); } return result; } };