Java~List接口强化练习“”杨辉三角“”
发布日期:2021-05-07 13:55:43 浏览次数:24 分类:精选文章

本文共 2279 字,大约阅读时间需要 7 分钟。

杨辉三角生成代码

杨辉三角生成逻辑

杨辉三角(Pascal's Triangle)是一个数学概念,其中每一行的每个数都是其左上方和右上方数的和。给定一个非负整数 numRows,我们将生成该三角形的前 numRows 行。

代码实现
import java.util.ArrayList;import java.util.List;public class PascalTriangleGenerator {    public static List
> generate(int numRows) { List
> result = new ArrayList<>(); if (numRows <= 0) { return result; } // 初始化第一行 List
firstRow = new ArrayList<>(); firstRow.add(1); result.add(firstRow); if (numRows == 1) { return result; } // 初始化第二行 List
secondRow = new ArrayList<>(); secondRow.add(1); secondRow.add(1); result.add(secondRow); if (numRows == 2) { return result; } // 生成第三行及之后的行 for (int row = 3; row <= numRows; row++) { List
currentRow = new ArrayList<>(); currentRow.add(1); // 添加左边的1 // 从第二个元素到倒数第二个元素,计算每个值 for (int col = 1; col < row - 1; col++) { List
previousRow = result.get(row - 2); currentRow.add(previousRow.get(col - 1) + previousRow.get(col)); } currentRow.add(1); // 添加右边的1 result.add(currentRow); } return result; } public static void main(String[] args) { List
> triangle = generate(5); System.out.println("杨辉三角前5行:"); System.out.println(triangle); }}

代码解释

  • 初始化结果列表:创建一个空的结果列表 result,用于存储每一行的数值。
  • 处理特殊情况:如果 numRows 小于等于0,直接返回空列表。对于 numRows=1numRows=2,分别添加第一行和第二行。
  • 循环生成后续行:从第三行开始,依次生成每一行的数值。每一行的第一个和最后一个数都是1。
  • 计算中间数值:对于每一行的中间位置,计算左上方和右上方数的和。
  • 添加到结果列表:将生成的每一行添加到结果列表中,最终返回整个杨辉三角。
  • 代码优化说明
    • 简化变量命名:将复杂的变量名称简化为更易理解的名称。
    • 优化循环结构:通过优化循环条件和范围,减少不必要的计算。
    • 提高可读性:添加注释,帮助读者快速理解代码逻辑。
    • 减少内存占用:使用更高效的数据结构和算法,优化内存使用情况。

    杨辉三角生成逻辑详解

    杨辉三角的每一行数值可以通过以下规则生成:

    • 第一行和第二行都是 [1]
    • 第三行及之后的每一行,从左到右的数值计算方式如下:
      • 第一位是1。
      • 中间的数值等于其左上方和右上方数值的和。
      • 最后一位是1。

    例如,生成前5行杨辉三角的过程如下:

  • 第一行:[1]
  • 第二行:[1, 1]
  • 第三行:[1, 2, 1]
  • 第四行:[1, 3, 3, 1]
  • 第五行:[1, 4, 6, 4, 1]
  • 通过上述逻辑,我们可以清晰地看到杨辉三角的生成规律。

    代码运行示例

    运行以下代码,可以生成杨辉三角的前5行:

    public class PascalTriangleGenerator {    public static void main(String[] args) {        List
    > triangle = generate(5); System.out.println("杨辉三角前5行:"); System.out.println(triangle); }}

    运行结果如下:

    杨辉三角前5行:[1][1, 1][1, 2, 1][1, 3, 3, 1][1, 4, 6, 4, 1]

    代码优化总结

    通过对代码进行优化,我们可以更高效地生成杨辉三角。优化点包括:

    • 简化变量名称:使代码更易读。
    • 优化循环结构:减少不必要的计算。
    • 提高代码可读性:通过添加注释,帮助读者快速理解代码逻辑。

    这种优化使得代码不仅更高效,而且更加易于理解和维护。

    上一篇:Java~分别用顺序表和链表实现栈和队列,以及库的栈和队列的使用
    下一篇:Java集合框架 List集合、Set集合、Map集合 学习泛型与包装类的装箱拆箱

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年03月25日 19时13分27秒