leetcode -- Pascal's Triangle II
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?
[解题思路]
从后往前计算,另外Trangle的index从0开始,故分配的数组大小为rowIndex + 1
1 public class Solution { 2 public ArrayList<Integer> getRow(int rowIndex) { 3 // Start typing your Java solution below 4 // DO NOT write main() function 5 ArrayList<Integer> result = new ArrayList<Integer>(); 6 if(rowIndex == 0){ 7 result.add(1); 8 return result; 9 } else if(rowIndex == 1){ 10 result.add(1); 11 result.add(1); 12 return result; 13 } 14 int[] num = new int[rowIndex + 1]; 15 num[0] = 1; 16 num[1] = 1; 17 18 for(int j = 2; j <= rowIndex; j++){ 19 for(int i = j; i >= 0; i--){ 20 if(i == 0 || i == j){ 21 num[i] = 1; 22 } else { 23 num[i] = num[i] + num[i - 1]; 24 } 25 } 26 } 27 for(int i = 0; i <= rowIndex; i++){ 28 result.add(num[i]); 29 } 30 return result; 31 } 32 }