Given an integer numRows
, return the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:
Example 1:
Input: numRows = 5 Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Example 2:
Input: numRows = 1 Output: [[1]]
Constraints:
1 <= numRows <= 30
题目比较简单,思路也很直接,不多写了,直接上代码
impl Solution {
pub fn generate(num_rows: i32) -> Vec<Vec<i32>> {
let mut dp = vec![vec![1; num_rows as usize]; num_rows as usize];
for i in 1..num_rows as usize {
for j in 1..i {
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
}
}
dp.into_iter()
.enumerate()
.map(|(i, l)| l[..i + 1].to_vec())
.collect()
}
}