<LeetCode OJ> 118./119. Pascal's Triangle(I / II)
2016-02-18 19:01
393 查看
118. Pascal's Triangle
My SubmissionsQuestion
Total Accepted: 73965 Total
Submissions: 227957 Difficulty: Easy
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] ]
Subscribe to see which companies asked this question
Hide Tags
Array
Show Similar Problems
分析:
很容易看出result[i][j]=result[i-1][j]+result[i-1][j-1];
最后发现申请二维数组时以下两种方式完全等价。
vector< vector<int> > result(numRows); //申请数组 for(int i=0;i<numRows;i++) result[i].resize(i+1);或者这种:
vector< vector<int> > result; vector<int> tmpres; //申请数组 for(int i=0;i<numRows;i++) { tmpres.resize(i+1); result.push_back(tmpres); }
可AC代码为:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector< vector<int> > result; vector<int> tmpres; //申请数组 for(int i=0;i<numRows;i++) { tmpres.resize(i+1); result.push_back(tmpres); }
//初始化边界
for(int i=0;i<numRows;i++)//第一列
result[i][0]=1;
for(int i=0;i<numRows;i++)//对角线
result[i][i]=1;
//递推,由上一行和上一行右一列的元素和
for(int i=2;i<numRows;i++)
for(int j=1;j<i;j++)
result[i][j]=result[i-1][j]+result[i-1][j-1];
return result;
}
};
或者:
class Solution { public: vector<vector<int>> generate(int numRows) { vector< vector<int> > result(numRows); if(numRows==0) return result; //申请数组 for(int i=0;i<numRows;i++) result[i].resize(i+1); //初始化边界 for(int i=0;i<numRows;i++)//第一列 result[i][0]=1; for(int i=0;i<numRows;i++)//对角线 result[i][i]=1; //递推,由上一行和上一行右一列的元素和 for(int i=2;i<numRows;i++) for(int j=1;j<i;j++) result[i][j]=result[i-1][j]+result[i-1][j-1]; return result; } };
119. Pascal's Triangle II
My SubmissionsQuestion
Total Accepted: 66676 Total
Submissions: 212140 Difficulty: Easy
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return
[1,3,3,1].
Note:
Could you optimize your algorithm to use only O(k) extra space?
Subscribe to see which companies asked this question
Hide Tags
Array
Show Similar Problems
分析:
和上面一体道理一样,只是只返回指定的一行即可!总感觉可以直接推出来,无无需申请这么多空间!
class Solution { public: vector<int> getRow(int rowIndex) { int numRows=rowIndex+1; vector< vector<int> > result(numRows); //申请数组 for(int i=0;i<numRows;i++) result[i].resize(i+1); //初始化边界 for(int i=0;i<numRows;i++)//第一列 result[i][0]=1; for(int i=0;i<numRows;i++)//对角线 result[i][i]=1; //递推,由上一行和上一行右一列的元素和 for(int i=2;i<numRows;i++) for(int j=1;j<i;j++) result[i][j]=result[i-1][j]+result[i-1][j-1]; return result[rowIndex]; //返回指定行 } };
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50688017
原作者博客:http://blog.csdn.net/ebowtang
相关文章推荐
- GCD 深入理解(二)
- hbase 之 compaction
- HBASE PUT讲解
- PHP网站首页打不开的原因讲起
- c语言入门之项目1.7——利用if语句解决数学题
- iOS 中自定义cell和控制器之间常用传值方式
- ubuntu14.04安装saltstack
- hbase 之 split
- hbase 之 bloomfilter
- 网络编程_概念_网络_端口_URL_TCP_UDPJAVA184
- ios中集合遍历方法的比较和技巧
- 树链剖分学习
- 同时被3和5整除的数
- Java回调机制
- Unity5标准着色器源代码剖析之一:架构分析篇
- ubuntu 12.04lts 安装mysql ,并通过QT连接
- UITextField控件用法
- javaweb基础学习(四)<jstl>
- HBase 之 TableDescriptors FSTableDescriptors HTableDescriptor HColumnDescriptor
- hadoop2.2.0 关于hdfs的梳理