您的位置:首页 > 编程语言 > Java开发

[Leetcode][JAVA] Pascal's Triangle I, II

2015-01-08 03:53 369 查看
Pascal'sTriangle:

GivennumRows,generatethefirstnumRowsofPascal'striangle.

Forexample,givennumRows=5,
Return

[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]

已知行数生成帕斯卡三角。实际上只要有第i层,那么就能生成第i+1层。每次新生成的层加入最终集合中即可。


publicList<List<Integer>>generate(intnumRows){
List<List<Integer>>re=newArrayList<List<Integer>>();

for(inti=0;i<numRows;i++){
List<Integer>temp=newArrayList<Integer>();
for(intj=0;j<=i;j++){
if(j==0||j==i)
temp.add(1);
else
temp.add(re.get(i-1).get(j-1)+re.get(i-1).get(j));
}
re.add(temp);
}
returnre;
}



Pascal'sTriangleII:

Givenanindexk,returnthekthrowofthePascal'striangle.

Forexample,givenk=3,
Return
[1,3,3,1]
.


Note:
CouldyouoptimizeyouralgorithmtouseonlyO(k)extraspace?

与第一题几乎一样,只不过不需要返回整个三角而只需要返回最后一层。全程只需要维护生成层和它上一层两个ArrayList即可。

publicList<Integer>getRow(introwIndex){
List<Integer>re=newArrayList<Integer>();
for(inti=0;i<=rowIndex;i++){
List<Integer>temp=newArrayList<Integer>();
for(intj=0;j<=i;j++){
if(j==0||j==i)
temp.add(1);
else
temp.add(re.get(j-1)+re.get(j));
}
re=temp;
}
returnre;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: