当前位置:首页 > 系统教程 > 正文

LeetCode必刷算法:Java顺序表实现杨辉三角(Java数据结构实战教程)

SEO关键词:Java杨辉三角、LeetCode算法题、Java顺序表、ArrayList实战教程

一、什么是杨辉三角?

杨辉三角(Pascal's Triangle)是数学中一个非常著名的几何排列。它的规律非常简单:每行端点处的数字均为1,而中间的每一个数字都是它左上方和右上方的两个数字之和。在算法面试中,掌握Java杨辉三角的实现逻辑是夯实数据结构基础的关键一步。

LeetCode必刷算法:Java顺序表实现杨辉三角(Java数据结构实战教程) Java杨辉三角  LeetCode算法题 Java顺序表 ArrayList实战教程 第1张

二、解题思路:利用Java顺序表(ArrayList)

在LeetCode中,这类题目通常要求返回一个 List<List<Integer>>。这实际上就是一个动态的二维数组。通过这篇ArrayList实战教程,我们可以利用 ArrayList 的动态扩容特性来存储每一行的数据。

  • 第一行固定为 [1]。
  • 每一行的第一个元素和最后一个元素都是 1。
  • 中间元素 row[j] = prevRow[j-1] + prevRow[j]

三、代码实现

下面是这道LeetCode算法题的标准Java解法,代码中附带详细注释,非常适合小白学习:

import java.util.ArrayList;import java.util.List;public class PascalTriangle {    public List<List<Integer>> generate(int numRows) {        // 1. 定义外层顺序表:Java顺序表的嵌套        List<List<Integer>> ret = new ArrayList<>();        // 2. 第一行固定是 [1]        List<Integer> firstRow = new ArrayList<>();        firstRow.add(1);        ret.add(firstRow);        // 3. 从第二行开始遍历        for (int i = 1; i < numRows; i++) {            List<Integer> row = new ArrayList<>();            List<Integer> prevRow = ret.get(i - 1); // 获取上一行            // 行首添加1            row.add(1);            // 计算中间元素            for (int j = 1; j < i; j++) {                int num = prevRow.get(j - 1) + prevRow.get(j);                row.add(num);            }            // 行尾添加1            row.add(1);                        // 将当前行存入结果集            ret.add(row);        }        return ret;    }}

四、复杂度分析与总结

通过Java顺序表实现杨辉三角,我们的时间复杂度为 O(numRows²),因为我们需要填充三角形中的每一个数字。空间复杂度同样为 O(numRows²),用于存储生成的结果。

学习心得: 这道题不仅考察了循环控制逻辑,还让我们深入理解了 Java 集合框架中 ArrayList 的基本操作。对于初学者来说,熟练掌握这种嵌套 List 的处理方式,是通关 LeetCode 简单题的关键。