vector容器解决杨辉三角

一、题目描述

118. 杨辉三角

给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1
输出: [[1]]

二、题目解析

在之前只学了C语言,用二维数组创建写这道题时,需要动态开辟数组。很麻烦。

但是学了vector容器之后,使用它来秒解这道题,非常的爽!!!

首先我们需要开辟空间,vector容器开辟空间的用resize这个方法,并且开辟的时候还能直接赋值,简直不要太爽!

(注意resize和reverse的区别:Reserve操作是用于预分配Vector的容量,Reserve操作只是预分配内存,并不会改变Vector的大小Resize操作是用于改变Vector的大小。当我们需要增加或减少Vector中的元素数量时,可以使用Resize操作。Resize会改变Vector的大小,并且如果需要的话,它会分配或释放内存。)

所以我们可以利用for循环,让第一行开辟的数据是1,第二行是2,以此来动态开辟数组!

杨辉三角最核心的一点就是:该元素的值 = 上一行同位置的元素 + 上一行同位置元素的前一个元素

最后直接返回vector数组即可~

三、原码

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> vv;
        vv.resize(numRows);
        for(int i = 0;i<numRows;i++)
        {
            vv[i].resize(i+1,0);//给每一行开空间并且赋值
            vv[i].front() = vv[i].back() = 1;
        }
        for(int i = 0;i<vv.size();i++)
        {
            for(int j = 0;j<vv[i].size();j++)//直接计算每一行有多少个值
            {
                if(vv[i][j] == 0)
                {
                    vv[i][j] = vv[i-1][j] + vv[i-1][j-1];//杨辉三角的真谛
                }
            }
        }
        return vv;
    }
};

相关推荐

  1. 三角

    2024-01-16 10:26:09       40 阅读
  2. 三角(Python)

    2024-01-16 10:26:09       39 阅读
  3. leetcode-三角

    2024-01-16 10:26:09       40 阅读
  4. 三角型打印

    2024-01-16 10:26:09       36 阅读
  5. ZZULIOJ 1130: 三角

    2024-01-16 10:26:09       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-16 10:26:09       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-16 10:26:09       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-16 10:26:09       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-16 10:26:09       20 阅读

热门阅读

  1. 2024年Top 10的人工智能岗位及如何准备

    2024-01-16 10:26:09       33 阅读
  2. Mysql

    2024-01-16 10:26:09       33 阅读
  3. leetcode热题100.两数之和

    2024-01-16 10:26:09       30 阅读
  4. show processlist 显示的MySQL语句不全的解决方法

    2024-01-16 10:26:09       34 阅读
  5. K8s面试题——基础篇1

    2024-01-16 10:26:09       26 阅读
  6. LeetCode——82. 删除排序链表中的重复元素II

    2024-01-16 10:26:09       32 阅读
  7. 【uniapp-小程序-给video添加水印】

    2024-01-16 10:26:09       27 阅读
  8. linux不同场景下修改文件名的五种方法

    2024-01-16 10:26:09       34 阅读
  9. 快速入门学会tomcat!

    2024-01-16 10:26:09       25 阅读
  10. day08

    day08

    2024-01-16 10:26:09      32 阅读
  11. rollup + typescript 搭建项目

    2024-01-16 10:26:09       34 阅读
  12. 59道SpringCloud面试题详解含答案(值得珍藏)

    2024-01-16 10:26:09       26 阅读