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行的数,要求用o(k)的空间复杂度。
也是直接相加就可以了。
public class Solution { public List<Integer> getRow(int rowIndex) { List ans = new ArrayList<Integer>(); if( rowIndex == 0){ ans.add(1); return ans; } else if( rowIndex == 1){ ans.add(1); ans.add(1); return ans; } int[] result = new int[rowIndex+1]; result[0] = 1; result[1] = 1; for( int i = 2;i<rowIndex+1;i++){ int a = result[0]; int b = result[1]; result[i] = 1; for( int j = 1;j<i;j++){ result[j] = a+b; a = b; b = result[j+1]; } } for( int i = 0 ;i<rowIndex+1;i++) ans.add(result[i]); return ans; } }