- 题目描述
- 示例演示
- 示例一
- 示例二
- 算法思想
- 算法代码
- 方式一:返回List
- 方式二:返回int型二维数组
- 一个非负整数 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]
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;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)