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 List<List<Integer>> generate(int numRows) {
 2         if (numRows < 1) {
 3             return new ArrayList<List<Integer>>();
 4         }
 5         List<List<Integer>> ret = new ArrayList<List<Integer>>();
 6         List<Integer> first = new ArrayList<Integer>();
 7         //加入头
 8         first.add(1);
 9         ret.add(first);
10         for (int i = 1; i < numRows; i++) {
11             ArrayList<Integer> row = new ArrayList<Integer>();
12             row.add(1);
13             List<Integer> pre = ret.get(i - 1);
14             for (int j = 1; j < i; j++) {
15                 row.add(pre.get(j - 1) + pre.get(j));
16             }
17             row.add(1);
18             ret.add(row);
19         }
20         return ret;
21     }

别人的:

 1 public List<List<Integer>> generateII(int numRows) {
 2         List<List<Integer>> ret = new ArrayList<List<Integer>>();
 3         for(int i=0; i<numRows; i++) {
 4             List<Integer> row = new ArrayList<Integer>();
 5             for(int j=0; j<=i; j++) {
 6                 //当时一行头或者尾时,加入1
 7                 if(j == 0 || j == i) {
 8                     row.add(1);
 9                 } else {
10                     row.add(ret.get(i-1).get(j-1) + ret.get(i-1).get(j));
11                 }
12             }
13             ret.add(row);
14         }
15         return ret;
16     }

 

posted on 2015-03-30 09:55  绿树荫  阅读(171)  评论(0编辑  收藏  举报

导航