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?
和上一题类似,给一个目录k,能够直接返回第K排的序列。
可以大大节省需要的空间。
不过一次写出一个正确的代码不是很容易。
更简单的办法是从后往前加,这样就不存在值被覆盖的情况。
public class Solution {
public List<Integer> getRow(int rowIndex) {
List<Integer> result = new ArrayList<Integer>(rowIndex);
rowIndex++;
for (int i = 0; i <rowIndex; i++) {
result.add(1);
}
for (int i = 0; i < rowIndex; i++) {
for (int j =i-1; j > 0 ; j--) {
result.set(j,result.get(j-1)+result.get(j));
}
result.set(0,1);
result.set(i, 1);
}
return result;
}
}
既要考虑k=0 1 2的情况。
解法2:应该可以直接根据公式得到序列
二项式系数可以根据递归得出。
第n行m列元素应该为:
C(n-1,m-1)=(n-1)!/[(m-1)!(n-m)!]