力扣Java - 118. 杨辉三角
杨辉三角
题目描述
- 一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
- 「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例演示
示例一
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例二
输入: numRows = 1
输出: [[1]]
算法思想
- 杨辉三角第 i 行具有第 i 个元素,头和尾的元素值是 1 。
- 以二维数组 nums 为例解释。
- 给首尾元素赋值:nums[i][0] = nums[i][i] = 1
- 给中间元素赋值:nums[i][j] = nums[i-1][j] + nums[i-1][j-1]
算法代码
方式一:返回List
class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> yang = new ArrayList<List<Integer>>(); for (int i = 0; i < numRows; i++){ List<Integer> list = new ArrayList<Integer>(); for (int j = 0; j <= i ; j++){ if (j == 0 || j == i){ list.add(1); }else{ int num = yang.get(i-1).get(j) + yang.get(i-1).get(j-1); list.add(num); } } yang.add(list); } return yang; }}
方式二:返回int型二维数组
class Solution { public int[][] generate(int numRows) { int[][] yang = new int[numRows][]; for (int i = 0; i < numRows; i++){ yang[i] = new int[i+1]; yang[i][0] = yang[i][i] = 1; for (int j = 1; j < yang[i].length - 1; j++){ yang[i][j] = yang[i-1][j] + yang[i-1][j-1]; } } return yang; }}