怎样可以免费做网站,怎样学习做网站的编程,适合在家做的网站工作,wordpress九宫格主题一、题目描述
118. 杨辉三角
给定一个非负整数 numRows#xff0c;生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中#xff0c;每个数是它左上方和右上方的数的和。 示例 1:
输入: numRows 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:
输入: numRo…一、题目描述
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:vectorvectorint generate(int numRows) {vectorvectorint vv;vv.resize(numRows);for(int i 0;inumRows;i){vv[i].resize(i1,0);//给每一行开空间并且赋值vv[i].front() vv[i].back() 1;}for(int i 0;ivv.size();i){for(int j 0;jvv[i].size();j)//直接计算每一行有多少个值{if(vv[i][j] 0){vv[i][j] vv[i-1][j] vv[i-1][j-1];//杨辉三角的真谛}}}return vv;}
};