描述:
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] ]
思路:
就是类似杨辉三角的问题,用两个数组存储相邻的两行然后用第一行来算第二行即可,将计算出的数据存储到一个列表中即可。
代码:
public List<List<Integer>> generate(int numRows) { List<List<Integer>> list = new ArrayList<List<Integer>>(); if (numRows <= 0) return list; int arr[][] = new int[2][]; for (int i = 0; i < 2; i++) arr[i] = new int[numRows]; Arrays.fill(arr[0], 0, 1, 1); Arrays.fill(arr[1], 1); for (int i = 2; i < numRows; i++) { for (int j = 1; j < i; j++) arr[1][j] = arr[0][j] + arr[0][j - 1];// to caculate the piscal arr[0] = arr[1]; } List<Integer> subList = new ArrayList<Integer>(); if (numRows >2) { for (int num : arr[1]) subList.add(num); } else { if(numRows==1) subList.add(1); if(numRows==2) subList.add(1); } list.add(subList); return list; }