1. 程式人生 >實用技巧 >其它 >leetcode題解119-楊輝三角II

leetcode題解119-楊輝三角II


技術標籤:leetcode程式設計與演算法Java

問題描述

給定一個非負索引 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;
    }
}