Day 25 - LeetCode 118. Pascal's Triangle

LeetCode 118. Pascal's Triangle

題目

Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5, Return

  [
       [1],
      [1,1],
     [1,2,1],
    [1,3,3,1],
   [1,4,6,4,1]
  ]

翻譯

numRows為列數,產生一個Pascal三角形,例如說 numRows = 5 ,產生三角形如上所示。

想法

產生二維陣列, 每個開頭跟結尾都是1, 每一列的第n個位置, 都是上一列的(n-1 + n)

詳細參閱

https://discuss.leetcode.com/topic/57444/a-clear-cpp-0ms-solution

js 二維陣列寫法
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/%E9%A0%90%E5%85%88%E5%AE%9A%E7%BE%A9%E7%9A%84%E6%A0%B8%E5%BF%83%E7%89%A9%E4%BB%B6/Array_%E7%89%A9%E4%BB%B6


Code

/**
 * @param {number} numRows
 * @return {number[][]}
 */
var generate = function(numRows) {
    if ( numRows === 0 ) {
        return [];
    }
    
    let ans = new Array(numRows);
    for ( let index = 0; index < numRows; index++ ) {

        for ( let j = 0; j <= index; j++ ){
            //js 二維陣列特性要宣告, 不然會產生`TypeError: Cannot set property '0' of undefined`
            if ( !ans[index] ) {
                ans[index] = new Array(j);
            }
            //開頭結尾都是1
            if ( j === 0 || j === index ) {
                ans[index][j] = 1;
            } else {
                ans[index][j] = ans[index - 1][j - 1] + ans[index - 1][j];  
            }
        }
    }
    return ans;
};

Run

留言