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+1个,分别是
Ck0,Ck1,Ck2…………,Ckk-1,Ckk 就是算组合数。
public class Solution {
public List<Integer> getRow(int rowIndex)
{
List<Integer>retlist=new ArrayList<>();
for(int i=0;i<=rowIndex;i++)
retlist.add((int) com(rowIndex, i));
return retlist;
}
private long com(int n, int r)
{
if (n - r < r)
r = n - r;
long i, j, s = 1;
for (i = 0, j = 1; i < r; ++i)
{
s *= (n - i);
for (; j <= r && s % j == 0; ++j)
s /= j;
}
return s;
}
}