跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

Java 顺序表实现杨辉三角思路与代码

杨辉三角是经典的二维数组与动态列表结合案例。通过外层循环控制行数,内层处理列数,利用上一行相邻元素之和生成当前行数据。核心在于初始化首尾为 1,中间元素递推计算。代码采用 ArrayList 存储 List,空间复杂度 O(n^2),适合理解递归与迭代逻辑及基础数据结构操作。

moshang发布于 2026/3/15更新于 2026/6/1121 浏览
Java 顺序表实现杨辉三角思路与代码

Java 顺序表实现杨辉三角思路与代码

杨辉三角动态演示

杨辉三角作为经典的数学与编程结合案例,是理解二维数组和动态列表操作的绝佳素材。我们将从逻辑拆解、问题分析等角度进行解析,彻底掌握其实现精髓。

一、思路分析

杨辉三角结构示意

杨辉三角的核心规律在于:每一行的数字都是上一行两个相邻数字之和。第一列和最后一列固定为 1。

在实现时,我们可以创建一个二维列表 List<List<Integer>> 来存储整个三角结构。外层循环控制行数 i(从 0 到 numRows),内层循环处理列数 j(小于 i)。

具体逻辑如下:

  • 每一行的第一个元素和最后一个元素直接赋值为 1。
  • 中间的元素通过上一行相邻的两个元素相加得到,即 preRow.get(j) + preRow.get(j - 1)。

计算过程示意

二、代码实现

这里使用 Java 的 ArrayList 来实现动态列表。注意导入必要的包,并确保类结构完整。

import java.util.ArrayList;
import java.util.List;

public class Test {
    public List<List<Integer>> generate(int numRows) {
        // 定义最终返回的二维列表
        List<List<Integer>> ret = new ArrayList<>();
        
        // 处理第 0 行,直接添加 [1]
        if (numRows == 0) return ret;
        List<Integer> list0 = new ArrayList<>();
        list0.add(1);
        ret.add(list0);

        // 从第 1 行开始计算
        for (int i = 1; i < numRows; i++) {
            List<Integer> curRow = new ArrayList<>();
            
            // 每一行第一个数为 1
            curRow.add(1);
            
            // 获取上一行数据用于计算中间值
            List<Integer> preRow = ret.get(i - 1);
            
            // 处理中间元素:当前值 = 上一行同位置 + 上一行前一个位置
            for (int j = 1; j < i; j++) {
                int x = preRow.get(j) + preRow.get(j - 1);
                curRow.add(x);
            }
            
            // 每一行最后一个数为 1
            curRow.add(1);
            
            // 将当前行加入结果集
            ret.add(curRow);
        }
        return ret;
    }
}

三、总结

杨辉三角虽然逻辑简单,但蕴含了丰富的数学规律和编程技巧。通过本文,我们掌握了利用二维列表生成杨辉三角的基本原理,理解了空间复杂度与迭代逻辑的结合。在实际开发中,这种递推思想常用于动态规划问题的初步建模。

目录

  1. Java 顺序表实现杨辉三角思路与代码
  2. 一、思路分析
  3. 二、代码实现
  4. 三、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 渗透测试全流程解析与实战方法
  • 面试高频缓存算法:LRU 与 LFU 原理及 Java 实现
  • 分治算法详解:快速排序、归并排序与快速选择
  • ChatGPT Go 在亚洲 16 国上线及三大使用限制
  • 10 款主流网络爬虫工具深度对比与选型指南
  • 强化学习基础:动态规划算法原理与实现
  • 用 Vibe Coding 实现 AI 全自动代码生成与交付
  • SKResNet 架构详解:融合选择性卷积与残差结构
  • Llama-Factory 模型服务负载均衡实战配置
  • OpenCode 接入 Kimi K2.5 配置与实战指南
  • C++ 轻量级搜索引擎实战:正/倒排索引构建详解
  • 动态规划路径类 DP 入门:3 道经典例题详解
  • C++ 算法实战:排序子序列划分与 LIS 优化
  • HarmonyOS Next DevEco Studio 端云一体化开发业务介绍
  • 基于大语言模型和 RAG 的知识库问答系统
  • 大语言模型人类对齐五大核心算法:SFT、RLHF、DPO、PPO、GRPO
  • next-ai-draw-io:基于 Next.js 的 AI 绘图工具搭建指南
  • AIGC 核心技术解析:Transformer、GPT 与 BERT 工作原理
  • OpenClaw 龙虾 AI 全能助手安装配置指南
  • C++ vector 基础使用与核心接口实战指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online