leetcode 杨辉三角打印三角形

mac2024-03-19  26

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/pascals-triangle 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路: 杨辉三角有个特点就是每个数等于他上一行的上面的数和左边的数的和 根据这个特点。可以采用双重循环的方式 注意每行第一个数和最后一个数都是1。可以直接写死 数据结构为2维数组。第一个代表行。第二个代表列 一行一行打印。 第一行是1.写死 从第二行开始打印。利用前一行 同一列的和前一列的求当前行当前列的数字

public List<List<Integer>> generate(int numRows) { List<List<Integer>> result = new ArrayList<>(); if (numRows == 0) { result.add(Arrays.asList()); return result; } result.add(Arrays.asList(1)); for (int i = 1; i < numRows; i++) { List<Integer> list = new ArrayList<>(); result.add(list); List<Integer> preList = result.get(i - 1); list.add(1); for (int j = 1; j < i; j++) { list.add(preList.get(j) + preList.get(j - 1)); } list.add(1); } return result; }
最新回复(0)