版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bqw18744018044/article/details/88999393
-
118题:杨辉三角
- 题目描述
给定一个非负整数numRows,生成杨辉三角的前numRows行;
在杨辉三角中,每个数是它左上方和右上方的和。
- 思路
直接模拟三角生成的过程即可。
- C++实现
vector<vector<int>> generate(int numRows) { vector<vector<int>> res; if(numRows==0)return res; for(int i=0;i<numRows;i++){ vector<int> curRow; for(int j=0;j<=i;j++){ if(j==0||j==i) curRow.push_back(1); else{ curRow.push_back(res[i-1][j-1]+res[i-1][j]); } } res.push_back(curRow); } return res; }
- 119题:杨辉三角II
- 题目描述
给定一个非负整数k,返回杨辉三角的第k行;
- 思路
因为不需要生成全部的杨辉三角,因此为了节省空间直接申请一个大小为k+1的数组(第k行有k+1个元素);然后在生成每行的值时,我们采用由后向前的方式来生成。
- C++实现
class Solution { public: vector<int> getRow(int rowIndex) { vector<int> res(rowIndex+1); res[0] = 1; for(int i=1;i<=rowIndex;i++){ for(int j=i;j>=1;j--){ res[j] += res[j-1]; } } return res; } };