您的位置:首页 > 其它

68. Pascal's Triangle II

2016-01-23 17:55 387 查看
Given an index k, return the kth row of the Pascal's triangle.

For example, given k = 3,

Return
[1,3,3,1]
.

分析:输出指定的第k行的杨辉三角上的值。(从第0行开始算起).k为负数时返回1.注意,在写代码的过程中要保存上一行的值以用于下一行的计算。还有,要注意新建list对象,以免被后面的值给覆盖。

/**
* 用额外的空间保存所有行上的值。
*/
public List<Integer> getRow(int rowIndex) {
List<List<Integer>> list = new ArrayList();
List<Integer> rowlist = null;/*表示上一行的元素*/
List<Integer> newrowlist = null;/*表示当前需要求的那一行的元素*/
if(rowIndex <=0){
newrowlist = new ArrayList();
newrowlist.add(1);
list.add(newrowlist);
return newrowlist;
}else {
int oldsize = list.size();
newrowlist = new ArrayList();
newrowlist.add(1);
list.add(newrowlist);
oldsize = list.size();
for(int i=oldsize;i<=rowIndex;i++){
rowlist=list.get(i-1);
newrowlist = new ArrayList();
newrowlist.add(1);
for(int j=1;j<i;j++){/*依次计算当前行中的元素的值*/
int num = rowlist.get(j-1)+rowlist.get(j);
newrowlist.add(num);
}
newrowlist.add(1);
list.add(newrowlist);
}
return newrowlist;
}
}
/**
* 用额外的空间只保存上一行和当前行。
*/
public List<Integer> getRow2(int rowIndex) {
List<Integer> rowlist = null;/*表示上一行的元素*/
List<Integer> newrowlist = null;/*表示当前需要求的那一行的元素*/
if(rowIndex <=0){
newrowlist = new ArrayList();
newrowlist.add(1);
return newrowlist;
}else {
newrowlist = new ArrayList();
newrowlist.add(1);
for(int i=1;i<=rowIndex;i++){
rowlist=newrowlist;
newrowlist = new ArrayList();
newrowlist.add(1);
for(int j=1;j<i;j++){/*依次计算当前行中的元素的值*/
int num = rowlist.get(j-1)+rowlist.get(j);
newrowlist.add(num);
}
newrowlist.add(1);
}
return newrowlist;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: