Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.java
給定一個非負整數 *numRows,*生成楊輝三角的前 numRows 行。python
In Pascal's triangle, each number is the sum of the two numbers directly above it.數組
在楊輝三角中,每一個數是它左上方和右上方的數的和。數據結構
Example:app
Input: 5 Output: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
第一行第二行都是1,每行第一個和最後一個都爲1,假設其餘位置的數x索引座標是(m,n),則x就是數是它 索引正上方的數和索引正上方的左邊的數 之和。即(m-1,n),(m-1,n-1)兩數和。code
class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> triangle = new ArrayList<List<Integer>>(); if(numRows == 0) return triangle; List<Integer> one = new ArrayList<Integer>(); one.add(1); triangle.add(one); if(numRows == 1) return triangle; for (int i=1;i<numRows;i++){ List<Integer> row = new ArrayList<Integer>(); row.add(1); for (int j=1;j<i;j++){ List<Integer> prev = triangle.get(i-1); row.add(prev.get(j-1)+prev.get(j)); } row.add(1); triangle.add(row); } return triangle; } }
class Solution: def generate(self, numRows: int) -> List[List[int]]: if numRows==0:return [] triangle=[[1]] if numRows==1: return triangle for i in range(1,numRows): tmp=[1] for j in range(1,i): tmp.append(triangle[i-1][j-1]+triangle[i-1][j]) tmp.append(1) triangle.append(tmp) return triangle
很簡單的一道題,能夠複習一下java嵌套數組數據結構。另外 能夠在內層循環加判斷 if(i!=0) row.add(1);triangle.add(row);
在i不等於0時才加上1,這樣可省略blog
List<Integer> one = new ArrayList<Integer>(); one.add(1); triangle.add(one); if(numRows == 1) return triangle;
代碼段,可是這個 if(i!=0)
會在每次進入第一次循環後判斷一次。本着減小資源消耗的原則,應當提到外面。索引