Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5,
Return
Return
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]用一个指针保存前一行, 然后每个新行要根据前一行得出. 时间复杂度O(1 + 2 + 3...n) = O(n^2)
public class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if (numRows <= 0) { return res; } List<Integer> tem = new ArrayList<Integer>(); tem.add(1); res.add(tem); for (int i = 2; i <= numRows; i++) { List<Integer> cur = new ArrayList<Integer>(); cur.add(1); for (int j = 0; j < tem.size() - 1; j++) { cur.add(tem.get(j) + tem.get(j + 1)); } cur.add(1); res.add(cur); tem = cur; } return res; } } //只用一个list的做法
public class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if (numRows <= 0) { return res; } List<Integer> tem = new ArrayList<Integer>(); tem.add(1); res.add(new ArrayList<Integer>(tem)); for (int i = 2; i <= numRows; i++) { int size = tem.size(); for (int j = size - 1; j > 0; j--) { int cur = tem.get(j) + tem.get(j - 1); tem.set(j, cur); } tem.add(1); res.add(new ArrayList<Integer>(tem)); } return res; } }
没有评论:
发表评论