当前位置: 首页 > article >正文

【Hot 100】118. 杨辉三角

目录

  • 引言
  • 杨辉三角
    • 我的解题
    • 代码优化
      • 优化说明

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:算法专栏
  • 💥 标题:【Hot 100】118. 杨辉三角
  • ❣️ 寄语:书到用时方恨少,事非经过不知难!

引言

杨辉三角

  • 🎈 题目链接:
  • 🎈 做题状态:

我的解题

这道题目也不难,就是当前层的计算是基于上一层两个元素值,代码如下:

class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> res = {{1}};    // 创建第一行// 从第二行开始循环while(res.size() < numRows){vector<int> row(res.size() + 1, 1);    // 创建当前行,并初始化// 计算中间元素值for (int i = 1; i < row.size() - 1; ++i){// 当前层的元素值是基于上一层两个元素计算row[i] = res[res.size()-1][i-1] + res[res.size()-1][i];}res.push_back(row);}return res;}
};

代码优化

可以进行以下优化:

  1. 边界条件处理:增加对 numRows=0 的特殊情况处理
  2. 代码简洁性:使用更直观的循环结构
  3. 空间利用:直接初始化结果向量大小,避免动态扩容
class Solution {
public:vector<vector<int>> generate(int numRows) {if (numRows == 0) return {};vector<vector<int>> res(numRows);for (int i = 0; i < numRows; ++i) {res[i] = vector<int>(i + 1, 1);  // 初始化当前行// 计算中间元素(跳过首尾元素)for (int j = 1; j < i; ++j) {res[i][j] = res[i - 1][j - 1] + res[i - 1][j];}}return res;}
};

优化说明

  1. 边界处理

    • 第一行添加了 numRows=0 的判断,返回空向量
    • 避免原始代码在 numRows=0 时返回 {{1}} 的错误
  2. 循环结构优化

    • 使用标准 for 循环替代 while,更符合遍历行数的语义
    • 外层循环直接控制行数 0 → numRows-1
    • 内层循环控制列数 1 → i-1(跳过首尾固定为1的元素)
  3. 空间预分配

    • 直接初始化 resnumRows 大小
    • 每行初始化时直接创建 i+1 个元素并设初值1
    • 避免动态扩容开销,提高性能
  4. 索引简化

    • 直接使用 i 作为行索引,j 作为列索引
    • 省去 res.size()-1 的计算,代码更清晰
http://www.lryc.cn/news/2396889.html

相关文章:

  • useMemo useCallback 自定义hook
  • ffmpeg 的视频格式转换 c# win10
  • 【irregular swap】An Examination of Fairness of AI Models for Deepfake Detection
  • 【JAVA】注解+元注解+自定义注解(万字详解)
  • 【Doris基础】Apache Doris中的Version概念解析:深入理解数据版本管理机制
  • 【Linux 基础知识系列】第一篇-Linux 简介与历史
  • 【图像处理基石】如何进行图像畸变校正?
  • 软件开发项目管理工具选型及禅道开源版安装
  • 【架构艺术】平衡技术架构设计和预期的产品形态
  • 电力系统时间同步系统
  • Vue使用toFixed保留两位小数的三种写法
  • 华为云【Astro zero】如何做“设备编辑”页面
  • Arch安装botw-save-state
  • 电脑为什么换个ip就上不了网了
  • NULL与空字符串的区别:数据库专家详解
  • github 2FA双重认证丢失解决
  • linux驱动 - 5: simple usb device驱动
  • OpenCV CUDA模块直方图计算------在 GPU 上计算输入图像的直方图(histogram)函数histEven()
  • QT/c++航空返修数据智能分析系统
  • Spring Security架构中过滤器的实现
  • Playwright Python API 测试:从入门到实践
  • ETL脚本节点使用的方式
  • PH热榜 | 2025-06-02
  • Domain Adaptation in Vision-Language Models (2023–2025): A Comprehensive Review
  • 容器化革命:告别传统Dockerfile,拥抱现代构建最佳实践
  • : influxdb + grafana+JMeter
  • Vue拖拽组件:vue-draggable-plus
  • TDengine 基于 TDgpt 的 AI 应用实战
  • RocketMQ 消息发送核心源码解析:DefaultMQProducerImpl.send () 方法深度剖析
  • BiliNote部署实践