leetcode刷题记录-118. Pascal's Triangle
2018-03-25 14:37
316 查看
leetcode刷题记录-118. Pascal’s Triangle
1.题目要求
Given numRows, generate the first numRows of Pascal’s triangle.For example, given numRows = 5,
Return
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
2.问题分析
计算杨辉三角:每个数字等于上一行的左右两个数字之和,即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,根据该原理即可写出程序关键点:当N为0时,应该返回一个空的vector[],而不是一个包含空vector的vector[[]];另外在计算每行的元素时,注意首尾元素的处理即可。总的来说比较容易实现。
3.代码实现
vector<vector<int>> generate(int numRows) { //杨辉三角的性质:每个数字等于上一行的左右两个数字之和,即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和 vector<vector<int>>output; vector<int> row_vec, lastRow_vec; int i, j, n, temp_right, temp_left; if (numRows>0) { row_vec.push_back(1); output.push_back(row_vec); } if (numRows>1) { for (i = 1; i<numRows; i++)//生成每行的vector { lastRow_vec = row_vec; row_vec.clear(); for (j = 0; j <= i; j++)//生成每行的元素 { temp_left = (j - 1 >= 0) ? lastRow_vec[j - 1] : 0; temp_right = (j <= i-1) ? lastRow_vec[j] : 0; // temp=j>lastRow_vec[j]+lastRow_vec[j-1]; row_vec.push_back(temp_left + temp_right); } output.push_back(row_vec); } } return output; }
相关文章推荐
- [LeetCode]118. Pascal's Triangle
- leetcode118. Pascal's Triangle
- LeetCode 118. Pascal's Triangle
- <LeetCode OJ> 118./119. Pascal's Triangle(I / II)
- leetcode-118. Pascal's Triangle
- LeetCode118. 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
- Leetcode 118. Pascal's Triangle
- 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
- Leetcode题解 118. Pascal's Triangle