Pascal's Triangle I,II
2024-10-15 11:17:43
题目来自于Leetcode
https://leetcode.com/problems/pascals-triangle/
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]
]
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int> >res;
for(int i=0;i<numRows;i++)
{
vector<int>vec(i+1,1);
if(i>1)
for(int j=1;j<i;j++)
vec[j]=res[i-1][j-1]+res[i-1][j];
res.push_back(vec);
vector<int>().swap(vec);
}
return res;
}
};
Pascal's Triangle II
Total Accepted: 42320 Total
Submissions: 143760
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?
此处有内存要求尽管採用第一种方法能够ac可是明显不符合要求
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<vector<int> >res;
for(int i=0;i<rowIndex+1;i++)
{
vector<int>vec(i+1,1);
if(i>1)
for(int j=1;j<i;j++)
vec[j]=res[i-1][j-1]+res[i-1][j];
res.push_back(vec);
vector<int>().swap(vec);
}
return res[rowIndex]; }
};
我们必须又一次设计算法。
第一想到的就是pascal三角形的系数会等于N行i列的值等于
( r
n )
可是
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int>res(rowIndex+1,1);
if(rowIndex<2)
return res;
long long nth=1;
for(int i=1;i<rowIndex+1;i++)
nth*=i;
long long rth=1,n_rth=nth;
for(int i=1;i<rowIndex;i++)
{ n_rth/=(rowIndex-i+1);
res[i]=nth/rth/n_rth;
rth*=(i+1);
}
return res;
}
};
用来存储二项式系数的值非常easy在rowIndex=24时候就报错了
最后一种也就是正确的方法是利用分配的空间来计算的详细给出了k=5的详细描写叙述
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhvdXllbGlodWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int>res(rowIndex+1,1);
if(rowIndex<2)
return res;
int t1,t2;
for(int i=2;i<=rowIndex;i++)
{
t1=res[0];
t2=res[1];
for(int j=1;j<i+1;j++)
{
res[j]=t1+t2;
t1=t2;
t2=res[j+1];
}
res[i]=1;
}
return res;
}
};
最新文章
- 连载《一个程序猿的生命周期》- 44.感谢,我从事了IT相关的工作
- js通过location.search来获取页面传来的参数
- 解决<;a>;文本本身带下划线和超链接下划线重合的问题
- mapreduce job提交流程源码级分析(一)(原创)
- Django对静态文件的处理——部署阶段
- 配置Session变量的生命周期
- Linux系统编程(24)——信号的生命周期
- Android OpenGL ES 开发(五): OpenGL ES 使用投影和相机视图
- 在controller中将timestamp类型的数据通过toString()方法变成字符串
- 潭州课堂25班:Ph201805201 django 项目 第十三课 短信验证码后台的实现 (课堂笔记)
- .NetCore中EFCore的使用整理
- nginx下js文件修改后访问不更新问题解决
- Myeclipse 配置Git详解
- Mac office ppt无法正常输入文字的问题解决方案
- PHP 程序员学数据结构与算法之《栈》
- eclipse git 报 git: 401 Unauthorized
- Qt Quick快速入门之线程基础
- opengl 模板测试 glStencilOp glStencilFunc
- mschart 使用心得和部署。
- swift的UITableView的使用