题目:
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?
思路:
O(k) 即是在固定的空间上新值覆盖原有值,在Code 中前后各添加一个0,覆盖时从第0位开始覆盖。
Code:
public List<Integer> getRow(int rowIndex) {
ArrayList<Integer> al=new ArrayList<Integer>();
if(rowIndex>=0) al.add(1);
for(int i=1;i<=rowIndex;i++){
al.add(0,0);
al.add(0);
for(int j=0;j<i+1;j++){
al.add(j,al.get(j)+al.get(j+1));
al.remove(j+1);
}
al.remove(i+1);
}
return al;
}
备注:
ArrayList 没有 replace功能,只能 add 再 remove, remove 时会返回被 remove 掉的 node。