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<Integer> list = new ArrayList<Integer>(); List<List<Integer>> resultList = new ArrayList<List<Integer>>(); int[][] temp = new int[numRows][numRows]; for (int i = 0; i < numRows; i++) { temp[i][0] = 1; temp[i][i] = 1; for (int j = 0; j <= i; j++) { if (j < i && i > 1 && j > 0) temp[i][j] = temp[i - 1][j - 1] + temp[i - 1][j]; list.add(temp[i][j]); } resultList.add(list); list = new ArrayList<Integer>(); } return resultList; }看了网上的解答:
public ArrayList<ArrayList<Integer>> generate(int numRows) { ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>(); if (numRows == 0) { return rst; } ArrayList<Integer> first = new ArrayList<Integer>(); first.add(0, 1); rst.add(first); for (int i = 1; i < numRows; i++) { ArrayList<Integer> tmp = new ArrayList<Integer>(i + 1); for (int j = 0; j < i + 1; j++){ tmp.add(-1); } ArrayList<Integer> prev = rst.get(i - 1); tmp.set(0, prev.get(0)); tmp.set(i, prev.get(i - 1)); for (int j = 1; j < i; j++){ tmp.set(j, prev.get(j - 1)+prev.get(j)); } rst.add(tmp); } return rst; }是不是还没有我的那个好,哈哈哈,一看就是三层for循环。
