【LeetCode】-- 118.杨辉三角

简介: 【LeetCode】-- 118.杨辉三角

1. 题目

在「杨辉三角」中,每个数是它左上方和右上方的数的和。给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。

2. 示例

示例 1:

输入: numRows = 5

输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1

输出: [[1]]

3. 分析

1. 找规律:杨辉三角斜边上的元素都是1,除了两条斜边上的元素外,其他元素的值都为上方两个元素之和:

2. 映射到数据结构:可以把杨辉三角看成一个二维数组,可以用vector类定义一个二维数组,第几行就有几个元素

3. 如何实现

(1)用vector定义二维数组:vector<vector<int>>  vv

(2)每一行元素个数不同,为二维数组每一行申请空间:resize( )

(3)将斜边上元素赋值为1:

         ① 最左边的斜边元素  vv[i][1] = 1;

         ② 最右边的斜边元素  vv[i][vv[i].size()-1] = 1; //vv[i].size()-1是每行最后一个元素的下标

(4)计算非斜边的元素值vv[i][j] = vv[i-1][j-1]+vv[i-1][j];

(5)注意题目要求的返回值类型

4. 代码实现

1. class Solution {
2. public:
3.     vector<vector<int>> generate(int numRows) {
4.         vector<vector<int>> vv;
5.         vv.resize(numRows);
6. 
7.         for(size_t i = 0;i<vv.size();i++)
8.         {
9.             vv[i].resize(i+1);
10.         }
11. 
12.         for(size_t i = 0;i<vv.size();i++)
13.         {
14.             vv[i][0] = vv[i][vv[i].size() - 1] = 1;
15.         }
16. 
17.         for(int i = 0;i<vv.size();i++)
18.         {
19.             for(int j = 0;j<vv[i].size();j++)
20.             {
21.                 if(vv[i][j] != 1)
22.                 {
23.                     vv[i][j] = vv[i-1][j-1] + vv[i-1][j];
24.                 }   
25.             }
26.         }
27. 
28.         return vv;
29.     }
30. };


相关文章
|
索引
leetcode-119:杨辉三角 II
leetcode-119:杨辉三角 II
134 0
leetcode代码记录(杨辉三角
leetcode代码记录(杨辉三角
128 1
|
缓存 算法 数据可视化
LeetCode 题目 119:杨辉三角 II
LeetCode 题目 119:杨辉三角 II
|
存储 SQL 算法
LeetCode 题目 118:杨辉三角
LeetCode 题目 118:杨辉三角
leetcode-118:杨辉三角
leetcode-118:杨辉三角
118 0
|
算法
【LeetCode】136. 只出现一次的数字、118. 杨辉三角
目录 136. 只出现一次的数字 118. 杨辉三角
130 0
leetcode:118. 杨辉三角
函数原型:int** generate(int numRows, int* returnSize, int** returnColumnSizes) 参数解析:numRows是指明要求前几行杨辉三角 returnSize是返回指针数组的元素个数 returnColumnSizes是指明杨辉三角每一行有几个元素
178 0
力扣118.杨辉三角
给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。链接位置:力扣。
184 0
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
248 6
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行

热门文章

最新文章

下一篇
oss云网关配置