1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#![allow(dead_code)]

pub fn generate(num_rows: i32) -> Vec<Vec<i32>> {
    if num_rows == 1 {
        return vec![vec![1]];
    }
    let mut res = vec![vec![1]];
    let num_rows = num_rows as usize;
    res.resize(num_rows, vec![]);
    for i in 1..num_rows {
        for j in 0..=i {
            if j == 0 || j == i {
                res[i].push(1);
            } else {
                let sum = res[i - 1][j - 1] + res[i - 1][j];
                res[i].push(sum);
            }
        }
    }

    res
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test1() {
        assert_eq!(
            generate(4),
            vec![vec![1], vec![1, 1], vec![1, 2, 1], vec![1, 3, 3, 1]]
        );
    }
}