Leetcode題解之其他(4)帕斯卡三角形
阿新 • • 發佈:2018-12-02
題目:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/26/others/67/
題目描述:
帕斯卡三角形
給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。
在楊輝三角中,每個數是它左上方和右上方的數的和。
示例:
輸入: 5 輸出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
思路:自己想想不到怎麼寫。參考了別人的程式碼。感覺思路好清晰。
首先,用一tmp 列表來放每一行。再用內迴圈放每個元素,這個很好想到。每次開始放之前,都先把1放進去先,關鍵在於1.判斷跳出的條件j<i 。2.每次存放上一行資料的列表。我一直沒想到如何獲取上一次的列表,其實還是對List<List<T>>的操作不熟悉。
class Solution { public List<List<Integer>> generate(int numRows) { List< List<Integer> > triangle = new ArrayList< List<Integer> >(); if(numRows==0)return triangle; List<Integer> tmp1=new ArrayList<Integer>(); tmp1.add(1); triangle.add(tmp1); for(int i=1;i<numRows;i++){ List<Integer> last=triangle.get(i-1); List<Integer> tmp=new ArrayList<Integer>(); tmp.add(1); for(int j=1;j<i;j++){ tmp.add( last.get(j-1)+last.get(j) ); } tmp.add(1); triangle.add(tmp); } return triangle; } }