118. 楊輝三角&119.楊輝三角 II
阿新 • • 發佈:2018-12-01
118、給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。
在楊輝三角中,每個數是它左上方和右上方的數的和。
示例:
輸入: 5
輸出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
1、首先解釋List<Integer>
泛型,指定傳入的型別,這樣定義之後,這個list只能接收Integer的物件,提高效率;
例如List<List<Integer>>返回[ [1] , [1,1] , [1,2,1] ]
2、初始化List<List<Integer>>的兩種方法
//方法一
List<List<Integer>> triangle=new ArrayList<>();
//方法二
List<List<Integer>> triangle=new ArrayList<List<Integer>>();
3、程式碼
import java.util.List; import java.util.ArrayList; class Solution { public static List<List<Integer>> generate(int numRows) { List<List<Integer>> triangle=new ArrayList<List<Integer>>(); //當行數等於0時,返回空陣列 if(numRows==0) return triangle; //當行數不等於0時 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; } }
119、給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。
在楊輝三角中,每個數是它左上方和右上方的數的和。
示例:
輸入: 3 輸出: [1,3,3,1]
方法一、在上面程式碼基礎上改動,先將楊輝三角每一行都求出,然後想要哪行就取哪行
import java.util.List; import java.util.ArrayList; class Solution { public static List<Integer> getRow(int rowIndex) { List<List<Integer>> triangle=new ArrayList<List<Integer>>(); List<Integer> tmp1=new ArrayList<Integer>(); tmp1.add(1); triangle.add(tmp1); for(int i=1;i<=rowIndex;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)+last.get(j-1)); tmp.add(1); triangle.add(tmp); } //返回楊輝三角第rowIndex+1行,當rowIndex=0時,返回[1] return triangle.get(rowIndex); }
方法二、 不需要將楊輝三角每一行都寫出,需要哪一行求哪一行就行
import java.util.List;
import java.util.ArrayList;
class Solution {
public static List<Integer> getRow(int rowIndex) {
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<=rowIndex;i++){
list.add(1);
for(int j=i-1;j>=1;j--)
list.set(j, list.get(j)+list.get(j-1) );
}
return list;
}
}