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 }

 

posted @ 2013-08-23 12:59  feiling  阅读(304)  评论(0编辑  收藏  举报