【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. };


相关文章
|
1月前
|
索引
leetcode-119:杨辉三角 II
leetcode-119:杨辉三角 II
36 0
|
6天前
|
缓存 算法 数据可视化
LeetCode 题目 119:杨辉三角 II
LeetCode 题目 119:杨辉三角 II
|
6天前
|
存储 SQL 算法
LeetCode 题目 118:杨辉三角
LeetCode 题目 118:杨辉三角
|
1月前
leetcode代码记录(杨辉三角
leetcode代码记录(杨辉三角
15 1
【每日一题】4.LeetCode——杨辉三角
【每日一题】4.LeetCode——杨辉三角
|
1月前
leetcode-118:杨辉三角
leetcode-118:杨辉三角
35 0
|
8月前
|
算法
【LeetCode】136. 只出现一次的数字、118. 杨辉三角
目录 136. 只出现一次的数字 118. 杨辉三角
28 0
|
9月前
leetcode:118. 杨辉三角
函数原型:int** generate(int numRows, int* returnSize, int** returnColumnSizes) 参数解析:numRows是指明要求前几行杨辉三角 returnSize是返回指针数组的元素个数 returnColumnSizes是指明杨辉三角每一行有几个元素
37 0
|
10月前
|
算法
《LeetCode-数组篇一》之杨辉三角与重塑矩阵
《LeetCode-数组篇一》之杨辉三角与重塑矩阵
|
2天前
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积