本文共 1223 字,大约阅读时间需要 4 分钟。
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]
public class PascalTriangle { public static void main(String[] args) { List
> generate = new PascalTriangle().generate(5); for (List integerList : generate){ for (int i = 0; i < 5 - integerList.size(); i++) { System.out.print(" "); } for (int i = 0; i < integerList.size(); i++) { System.out.print(integerList.get(i) + " "); } System.out.println(); } } /** * 小的集合用于存储每一行的数据 * 大的集合用于存储小的集合 * @param numRows * @return */ public List
> generate(int numRows) { List
> lists = new ArrayList<>(); List integerList = new ArrayList<>(); //循环遍历numRows for (int i = 0; i < numRows; i++) { //将每次的数进行初始化为1 integerList.add(0,1); //当集合大于2时,进入该循环,将除了第一个数和尾数的值通通经过上一个数的相邻的和加起来,并修改值 for (int j = 1; j < integerList.size() - 1; j++) { integerList.set(j,integerList.get(j+1) + integerList.get(j)); } //重新创建一个新集合,将数据添加到总集合中 lists.add(new ArrayList<>(integerList)); } return lists; }}
测试结果: