Pascal's Triangle

Given numRows, generate the first numRows of Pascal's triangle.

For example, given numRows = 5,
Return

[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

 1 public class Solution {
 2     public List<List<Integer>> generate(int numRows) {
 3         List<List<Integer>>triangle_list = new ArrayList<List<Integer>>();
 4         //初始化第一和第二行
 5         List<Integer>list1 = new ArrayList<Integer>();
 6         List<Integer>list2 = new ArrayList<Integer>();
 7         list1.add(1);
 8         list2.add(1);
 9         list2.add(1);
10         
11         //分情况讨论
12         if(numRows==1){
13             triangle_list.add(list1);
14         }
15         
16         if(numRows==2){
17             triangle_list.add(list1);
18             triangle_list.add(list2);
19         }
20         
21         if(numRows>2){
22              triangle_list.add(list1);
23              triangle_list.add(list2);
24              for(int i=2;i<numRows;i++){//i是行标对应外层list下标
25                  List<Integer>list3 = triangle_list.get(i-1);
26                  List<Integer>list4 = new ArrayList<Integer>();
27                  list4.add(1);
28                  for(int j=1;j<=i-1;j++){//根据杨辉三角用上一行list3来计算当前行list4
29                      list4.add(list3.get(j-1)+list3.get(j));
30                  }
31                  list4.add(1);
32                  triangle_list.add(list4);
33              }
34         }
35         
36         
37         return triangle_list;
38     }
39 }

根据杨辉三角来计算,还是比较easy的~

posted @ 2015-01-26 21:06  mrpod2g  阅读(119)  评论(0编辑  收藏  举报