leedcode每日一題:118. 楊輝三角

不會寫程式碼的程式設計師ctt發表於2020-12-06

一. 題目描述

給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。
在楊輝三角中,每個數是它左上方和右上方的數的和。
示例:
輸入: 5
輸出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]

二、題解

  1. 自己的解法:
class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> result;
        if(numRows <=0 ) return result;
        vector<int> temp;
        for(int i=0;i<numRows;i++){
            for(int j=0;j<=i;j++){
                if(j==0||i==j)
                    temp.push_back(1);
                else
                    temp.push_back(result[i-1][j-1]+result[i-1][j]);
            }
            result.push_back(temp);
            temp.clear();
        }
        return result;
    }
};
  1. 答案裡更加簡潔的寫法:
class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> result(numRows);
        if(numRows <=0 ) return result;
        
        for(int i=0;i<numRows;i++){
            result[i].resize(i+1);
            result[i][0] = result[i][i] = 1;
            for(int j=1;j<i;j++){
                result[i][j] = result[i-1][j-1]+result[i-1][j];
            }
        }
        return result;
    }
};

相關文章