119. Pascal's Triangle II
来源:互联网 发布:流体力学软件fluent 编辑:程序博客网 时间:2024/06/05 18:44
题目描述
Given an index k, return the kth row of the Pascal’s triangle.
For example, given k = 3,
Return [1,3,3,1].
思路
得到第k+1行的一整列的值。
解法1得到前k+1行的值,将最后一行的return就可以。
解法2,只用一个一维数组,前一行的数变成后一行时:
- 直接在后面添加一个1
- 从倒数第二个开始等于倒数第二个+倒数第三个,也就是相邻的两个相加,形成新的行的值,又不会破坏还未算的数。
例如:1 2 2 1 首先添加个1,变为1 2 2 1 1 然后从倒数第二个开始变化,相邻两个相加。
第一次:1 2 2 3 1
第二次:1 2 4 3 1
第三次:1 3 4 3 1
这样就得到了下一行的数,每次都是一样的方法。
代码
解法1:
class Solution {public: vector<int> getRow(int numRows) { vector< vector<int> > res(numRows+1); vector<int> t; int i, j; for(i = 0; i < numRows+1; i++) { res[i].resize(i+1);//第i行分配i个列 不可一下子分配n行n列 res[i][0] = 1; res[i][res[i].size()-1] = 1; for(j = 1; j < i; j++) { res[i][j] = res[i-1][j-1] + res[i-1][j]; } } for(j = 0; j < numRows+1; j++) { t.push_back(res[numRows][j]); } return t; }};
解法2:
class Solution {public: vector<int> getRow(int numRows) { vector<int> t; int i, j; t.push_back(1); if(numRows == 0) return t; t.push_back(1);//numRows = 1时 结果是1 1 for(i = 2; i <= numRows; i++) { t.push_back(1);//先写入1 for(j = i - 1; j > 0; j--) { t[j] = t[j] + t[j-1];//形成新的数 } } return t; }};
阅读全文
0 0
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 119. Pascal's Triangle II
- 模拟捕获SIGPIPE信号 实现TCP服务器
- LitJSON之JSON与对象间的相互映射
- [LeetCode] 77. Combinations
- java中最常用jar包
- 【dp专题1】hdu1087最大上升子段和 E
- 119. Pascal's Triangle II
- ios 限制UIButton点击频率
- C++类型转换操作符---补充(8)《Effective C++》
- extends 继承
- extjs4 grid合并列和合并行
- 【并查集】OJ_0003 A Bug
- Lotto
- AmazeUI图片轮播
- Android中日历读写操作