一、题目
1、审题
2、分析
输入一个整数 n, 返回杨辉三角的 n 行。
二、解答
1、思路:
方法一、
利用一次循环,直接计算杨辉三角的一行。再利用一次循环用 List 存储杨辉三角的 n 行。
public List<List<Integer>> generate(int numRows) { List<List<Integer>> resultList = new ArrayList<List<Integer>>(); if(numRows == 0) return resultList; else if(numRows == 1) { resultList.add(Arrays.asList(1)); return resultList; } resultList.add(Arrays.asList(1)); resultList.add(Arrays.asList(1, 1)); int i = 2; while(i < numRows) { List<Integer> targetList = new ArrayList<>(); List<Integer> tmpList = resultList.get(i-1); targetList.add(1); for (int j = 1; j < i; j++) targetList.add(tmpList.get(j) + tmpList.get(j-1)); targetList.add(1); resultList.add(targetList); i++; } return resultList; }
方法二、
直接在一个 List 中计算杨辉三角的每一行。
public List<List<Integer>> generate2(int numRows) { List<List<Integer>> resultList = new ArrayList<List<Integer>>(); List<Integer> row = new ArrayList<Integer>(); for(int i = 0; i < numRows; i++) { row.add(0, 1); for(int j = 1; j < row.size() - 1; j++) row.set(j, row.get(j) + row.get(j + 1)); resultList.add(new ArrayList<>(row)); } return resultList; }