• Time:O(n^2)
• Space:O(n^2)

## C++

``````class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans;

for (int i = 0; i < numRows; ++i)
ans.push_back(vector<int>(i + 1, 1));

for (int i = 2; i < numRows; ++i)
for (int j = 1; j < ans[i].size() - 1; ++j)
ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j];

return ans;
}
};
``````

## JAVA

``````class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ans = new ArrayList<>();

for (int i = 0; i < numRows; ++i) {
Integer[] temp = new Integer[i + 1];
Arrays.fill(temp, 1);
}

for (int i = 2; i < numRows; ++i)
for (int j = 1; j < ans.get(i).size() - 1; ++j)
ans.get(i).set(j, ans.get(i - 1).get(j - 1) + ans.get(i - 1).get(j));

return ans;
}
}
``````

## Python

``````class Solution:
def generate(self, numRows: int) -> List[List[int]]:
ans = []

for i in range(numRows):
ans.append([1] * (i + 1))

for i in range(2, numRows):
for j in range(1, len(ans[i]) - 1):
ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j]

return ans
``````