leetcode_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]
]

思路:

就是类似杨辉三角的问题,用两个数组存储相邻的两行然后用第一行来算第二行即可,将计算出的数据存储到一个列表中即可。

代码:

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;
	}


你可能感兴趣的:(迭代,Pascals,Triangle)