一,题目描述
难度简单623
给定一个非负整数
numRows,生成「杨辉三角」的前numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:
输入: numRows = 1 输出: [[1]]
二,解决思想:
除了头元素和尾元素和上一个集合相同之外,其他的每个元素都是上一个集合中的元素与其前一个元素之和。
三,代码:
package zyh.springcloud.chapter2.service.impl.algorithm;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName PascalsTriangle
* @Author zhangyonghui
* @Description
* @Date 2021/11/11 9:10
* @Version 1.0
**/
public class PascalsTriangle {
public static void main(String[] args) {
List<List<Integer>> outList = generate(5);
System.out.println("outList.toString() = " + outList.toString());
}
public static List<List<Integer>> generate(int numRows) {
//外边那个List
List<List<Integer>> waiList = new ArrayList<>();
for (int i = 1; i <= numRows; i++) {
if (i == 1) {
List<Integer> neiList = new ArrayList<>();
neiList.add(i);
waiList.add(neiList);
} else {
List<Integer> neiList = new ArrayList<>();
//获取上一个neiList:
List<Integer> preNeiList = waiList.get(i - 2);
for (int j = 0; j < preNeiList.size(); j++) {
Integer integer = preNeiList.get(j);
//加第一个:
if (j == 0) {
neiList.add(integer);
} else { //中间的一系列元素是上一个neiList中的元素与上一个元素之和:
Integer preInteger = preNeiList.get(j - 1);
int sumTemp = integer + preInteger;
neiList.add(sumTemp);
}
}
//加最后一个:
neiList.add(preNeiList.get(preNeiList.size() - 1));
waiList.add(neiList);
}
}
return waiList;
}
}
该博客介绍了如何使用Java实现杨辉三角的生成,重点在于理解每个元素如何根据上一行的元素计算得出。代码中展示了从给定的行数生成杨辉三角的逻辑,包括头尾元素的特殊处理和中间元素的计算方法。
https://leetcode-cn.com/problems/pascals-triangle/

358

被折叠的 条评论
为什么被折叠?



