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的~
原文:http://www.cnblogs.com/mrpod2g/p/4251382.html