LeetCode之楊輝三角(簡單 模擬)
阿新 • • 發佈:2018-11-07
給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。
在楊輝三角中,每個數是它左上方和右上方的數的和。
示例:
輸入: 5 輸出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
老規矩 先來自己的
public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList<>(); if(numRows<1){ return res; } List<Integer> list0 = new ArrayList<>(); list0.add(1); if(numRows == 1){ res.add(list0); return res; } res.add(list0); List<Integer> list1 = new ArrayList<>(); list1.add(1); list1.add(1); if(numRows == 2){ res.add(list1); return res; } res.add(list1); try { for (int i = 2; i < numRows; i++) { List<Integer> temp = new ArrayList<>(); temp.add(1); for (int j = 1; j < i + 1; j++) { if (j == i) { temp.add(1); break; } temp.add(res.get(i - 1).get(j - 1) + res.get(i - 1).get(j)); } res.add(temp); } }catch(Exception e){ e.printStackTrace(); } return res; }
再來啊大神的,大神的兩種情況合併到迴圈裡簡練
import java.util.ArrayList; class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> result = new ArrayList<>(); List<Integer> prev = null; for (int i = 0; i < numRows; i++) { List<Integer> row = new ArrayList<>(); row.add(1); for (int j = 1; j < i; j++) { row.add(prev.get(j) + prev.get(j - 1)); } if (i != 0) row.add(1); result.add(row); prev = row; } return result; } }