【leetcode之旅】陣列
阿新 • • 發佈:2019-01-27
給定一個非負整數 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<List<Integer>> generate = new PascalTriangle().generate(5); for (List<Integer> 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<List<Integer>> generate(int numRows) { List<List<Integer>> lists = new ArrayList<>(); List<Integer> 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; } }
測試結果: