leetcode简单题26 N.118 杨辉三角 rust描述


 

//  动态规划
pub fn generate(num_rows: i32) -> Vec<Vec<i32>> {
    let mut triangle: Vec<Vec<i32>> = vec![];

    for i in 0..num_rows {
        let mut row = vec![1; (i + 1) as usize];
        for j in 1..i as usize {
            row[j] = triangle[(i - 1) as usize][(j - 1)] + triangle[(i - 1) as usize][j];
        }
        triangle.push(row);
    }

    triangle
}
use std::collections::HashMap;
// 递归(带缓存)
struct Solution;
impl Solution {
    pub fn generate(num_rows: i32) -> Vec<Vec<i32>> {
        let mut cache = HashMap::new();
        let mut triangle = vec![];

        for i in 0..num_rows {
            let mut row = vec![];
            for j in 0..=i {
                row.push(Self::get_value(i, j, &mut cache));
            }
            triangle.push(row);
        }

        triangle
    }

    fn get_value(i: i32, j: i32, cache: &mut HashMap<(i32, i32), i32>) -> i32 {
        if j == 0 || j == i {
            return 1;
        }

        if let Some(&val) = cache.get(&(i, j)) {
            return val;
        }

        let val = Self::get_value(i - 1, j - 1, cache) + Self::get_value(i - 1, j, cache);
        cache.insert((i, j), val);
        val
    }
}
// 迭代
pub fn generate2(num_rows: i32) -> Vec<Vec<i32>> {
    let mut triangle: Vec<Vec<i32>> = Vec::with_capacity(num_rows as usize);
    for i in 0..num_rows as usize {
        let mut row = vec![1; i + 1];
        for j in 1..i {
            row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
        }
        triangle.push(row);
    }
    triangle
}
fn main() {}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 05:48:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 05:48:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 05:48:03       58 阅读
  4. Python语言-面向对象

    2024-07-17 05:48:03       69 阅读

热门阅读

  1. PR轨道蒙版|字体后放视频动画

    2024-07-17 05:48:03       24 阅读
  2. try-catch-finally使用注意事项

    2024-07-17 05:48:03       19 阅读
  3. IPython的数学魅力:%%latex命令绘制公式指南

    2024-07-17 05:48:03       24 阅读
  4. 采购管理软件:改善初创企业的采购流程

    2024-07-17 05:48:03       25 阅读
  5. 机体坐标系和导航坐标系

    2024-07-17 05:48:03       26 阅读
  6. 前后端工作重点小结

    2024-07-17 05:48:03       22 阅读
  7. WPF设置欢迎屏幕,程序启动过度动画

    2024-07-17 05:48:03       19 阅读
  8. 设计模式8种原则

    2024-07-17 05:48:03       20 阅读
  9. 内核线程之User-Mode Helpers

    2024-07-17 05:48:03       21 阅读
  10. 使用Spring Boot集成RocketMQ进行消息发送的示例

    2024-07-17 05:48:03       23 阅读
  11. 量化机器人在不同市场环境下的表现

    2024-07-17 05:48:03       22 阅读
  12. 微信小程序:2.全局开发

    2024-07-17 05:48:03       26 阅读
  13. DRF分页器(Django Restful Framework)

    2024-07-17 05:48:03       29 阅读
  14. 速盾:DDOS攻击能使用高防CDN防御吗?

    2024-07-17 05:48:03       22 阅读
  15. 面试题 29. 顺时针打印矩阵

    2024-07-17 05:48:03       24 阅读