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 }