题目链接:https://leetcode-cn.com/problems/pascals-triangle-ii/
题目说明:
给定一个非负索引 rowIndex
,返回「杨辉三角」的第 rowIndex
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: rowIndex = 3
输出: [1,3,3,1]
示例 2:
输入: rowIndex = 0
输出: [1]
示例 3:
输入: rowIndex = 1
输出: [1,1]
答题思路:
1、观察杨辉三角每一行,每一列有什么关系,并使用编号进行编写
2、重点关注每一行与每一行的关系,并学会用数学公式表达出来(第i行的的第j个与第i-1行的j与j+1 相等)
3、扩展学习 滚动数组
若将杨辉三角的内容进行格式调整,则可规律性的进行代码编写
代码:
class Solution { public: vector<int> getRow(int rowIndex) { vector<vector <int>> A(rowIndex + 1);//定义一个数组 for(int i = 0 ; i <=rowIndex; ++i){//循环第一层次,进行判断 A[i].resize(i+1); A[i][0] = A [i][i] =1; for(int j = 1;j<i; ++j){ A[i][j] = A[i-1][j] + A[i-1][j-1]; } } return A[rowIndex]; } };
TIPS:c++中序列式容器的一个共性函数, vv.resize(int n,element)表示调整容器vv的大小为n,扩容后的每个元素的值为element,默认为0 resize()会改变容器的容量和当前元素个数 定义 vector<type> vv; 头文件#include<vector>