leetcode題解119-楊輝三角II
阿新 • • 發佈:2020-12-07
問題描述
給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。
在楊輝三角中,每個數是它左上方和右上方的數的和。
示例:
輸入: 3
輸出: [1,3,3,1]
解題思路
初始化兩個陣列,nums用來儲存當前計算到楊輝三角的某一行的值,而yuan則儲存當前計算到楊輝三角的上一行的值。這樣,每次nums[i]=yuan[i-1]+yuan[i].
程式碼實現
class Solution {
public List<Integer> getRow(int rowIndex) {
List< Integer> lists=new ArrayList<>();
if(rowIndex==0){
lists.add(1);
return lists;
}
int nums[]=new int[rowIndex+1]; //儲存當前行的元素值
int yuan[]=new int[rowIndex+1]; //儲存上一行的元素值
//初始化第一行
nums[0]=1;
yuan[0]=1;
nums[1]=1;
yuan[1]=1;
for(int i=2;i<=rowIndex;i++){
for(int j=1;j<=i;j++){
nums[j]=yuan[j-1]+yuan[j]; //矩陣中左上方和正上方的元素和
System.out.println(nums[j]);
}
//yuan陣列的值在下一次迴圈中等於當前nums陣列的值,這裡進行更新
for(int j=1;j<=i;j++){
yuan[j]=nums[j];
}
}
for(int i=0;i<=rowIndex;i++){
lists. add(nums[i]);
}
return lists;
}
}