java数据结构之杨辉三角

130 阅读1分钟

题目

给定一个非负整数 numRows 生成「杨辉三角」的前 numRows 行。

代码实现

public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result = new ArrayList<>();
        if (numRows == 0) return result;
        result.add(Collections.singletonList(1));
        for (int i = 1; i < numRows; i++) {
            List<Integer> list = new ArrayList<>();
            list.add(1);
            for (int j = 1; j < i; j++) {
                list.add(result.get(i - 1).get(j - 1) + result.get(i - 1).get(j));
            }
            list.add(1);
            result.add(list);
        }
        return result;
    }

代码分析

我们首先创建一个空的集合列表result,用于存储生成的杨辉三角形。如果输入的numRows为0,则直接返回空的result。接着,将第一行[1]添加到result中。接下来从第二行开始,使用循环来生成每一行的列表。我们需要先new一个集合用来存储元素,将第一个元素1添加到集合中。使用内层循环来生成当前行的其他元素。对于第i行的第j个元素,它等于上一行的第j-1个元素和第j个元素之和,即result.get(i-1).get(j-1) + result.get(i-1).get(j)。将计算得到的值添加到集合中。直到内层循环结束后,将最后一个元素1添加到集合中,表示该行的最后一个元素。将集合添加到 对象result中,这样就可以完成当前行的生成。 当所有行都生成完毕后,返回该结果,就会得到了一个包含numRows行的杨辉三角形的列表。