一、问题描述
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?
二、问题分析
1、ArrayList数组默认创建后为空列表,执行get和set操作时会产生越界异常
2、利用第K行分配的空间,把Pascal三角的第0 ~ K - 1行都创建出来,重复利用第K行分配的空间并存放在其中;再利用上下行之间的计算关系,计算出第K行所有元素。
三、算法代码
public class Solution {
public List<Integer> getRow(int rowIndex) {
List<Integer> result = new ArrayList<Integer>(rowIndex + 1);
//初始化result数组,因为ArrayList数组默认创建后为空列表,执行get和set操作时会产生越界异常
for(int i = 0; i <= rowIndex; i++){
result.add(1);
}
for(int i = 1; i <= rowIndex; i++){
for(int j = i; j > 0; j--){
if(j == i){
result.set(j, result.get(j - 1));
}else{
result.set(j, result.get(j - 1) + result.get(j));
}
}
}
return result;
}
}