LeetCode 118. Pascal's Triangle
2017-12-14 19:22
330 查看
LeetCode 118. Pascal’s Triangle
Description:Given numRows, generate the first numRows of Pascal’s triangle.
Example:
For example, given numRows = 5,
Return: [
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
分析:
观察到每一行的头尾都为1,我们可以初始化每一行的头尾,然后根据当前行当前列的数等于前一行前一列的数加上前一行当前列的数,用两层循环求解。
这道题比较坑的地方是二维数组的初始化问题,一开始我行数和列数都初始化为numRows,导致每一行都有多余的0,其实可以利用resize初始化递增的列数。说到底,遇到这个问题还是对vector的操作不太熟悉,还得继续刷题。
代码如下:
#include <iostream> #include <vector> using namespace std; class Solution { public: vector<vector<int> > generate(int numRows) { vector<vector<int> > res; // 行数 res.resize(numRows); for (int i = 0; i < numRows; i++) { // 每一行的列数 res[i].resize(i + 1); // 初始化每一行的头尾,置为1 res[i][0] = 1; res[i][i] = 1; } // 第0行和第1行不用算,已经初始化了 for (int i = 2; i < numRows; i++) { for (int j = 1; j < i; j++) { // 当前行当前列的数等于前一行前一列的数加上前一行当前列的数 res[i][j] = res[i - 1][j - 1] + res[i - 1][j]; } } return res; } }; int main() { Solution s; int numRows; cin >> numRows; vector<vector<int> > res = s.generate(numRows); for (int i = 0; i < res.size(); i++) { for (int j = 0; j < res[i].size(); j++) { cout << res[i][j] << " "; } cout << endl; } return 0; }
相关文章推荐
- leetcode题解-118. Pascal's Triangle && 119. Pascal's Triangle II
- leetcode 118. Pascal's Triangle c++
- 【leetcode】118. Pascal's Triangle【java】
- LeetCode-118. Pascal's Triangle
- [LeetCode]118. Pascal's Triangle
- Leetcode 118. Pascal's Triangle 杨辉三角 解题报告
- LeetCode 118. Pascal's Triangle
- 【LeetCode】118. Pascal's Triangle
- 118. Pascal's Triangle LeetCode
- Leetcode 118. Pascal's Triangle (Easy) (cpp)
- LeetCode118. Pascal's Triangle-python(easy)
- [leetcode]118. Pascal's Triangle
- leetcode 118. Pascal's Triangle
- LeetCode-Array-118. Pascal's Triangle
- 【leetcode】118. Pascal's Triangle
- 【Leetcode】118. Pascal's Triangle
- [LeetCode]118. Pascal's Triangle&119. Pascal's Triangle II
- LeetCode 118. Pascal's Triangle
- Leetcode题解 118. Pascal's Triangle
- LeetCode 118. Pascal's Triangle