leetcode/
pascals_triangle_ii.rs1pub struct Solution;
24impl Solution {
25 pub fn get_row(row_index: i32) -> Vec<i32> {
26 assert!(row_index >= 0);
27
28 gen_pascal_triangle()
29 .skip(row_index as usize)
30 .next()
31 .unwrap()
32 }
33}
34
35fn gen_pascal_triangle() -> impl Iterator<Item = Vec<i32>> {
36 std::iter::successors(Some(vec![1]), |row| {
37 vec![1].into_iter()
38 .chain(row.windows(2).map(|v| v.iter().sum()))
39 .chain(vec![1].into_iter())
40 .collect::<Vec<i32>>()
41 .into()
42 })
43}
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48
49 #[test]
50 fn test() {
51 let cases = vec![
52 (0, vec![1]),
53 (1, vec![1,1]),
54 (2, vec![1,2,1]),
55 (3, vec![1,3,3,1]),
56 (4, vec![1,4,6,4,1]),
57 ];
58
59 for (num_rows, expect) in cases {
60 assert_eq!(expect, Solution::get_row(num_rows));
61 }
62 }
63}