JavaScript 楊輝三角 楊輝三角 II

給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。

在楊輝三角中,每個數是它左上方和右上方的數的和。

示例:

輸入: 5
輸出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/pascals-triangle
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

/**
 * @param {number} numRows
 * @return {number[][]}
 */
var generate = function(numRows) {
    var arr = [];
    for (var i = 0; i < numRows; i++) {
        var item = [];
        for (var j = 0; j <= i; j++) {
            if (j == 0) {
                item[0] = 1
            } else if (j == i) {
                item[j] = 1
            } else {
                // console.log("i", i)
                // console.log("j", j)
                item[j] = arr[i-1][j-1] + arr[i-1][j]
            }
        }
        arr.push(item)
        // console.log(arr)
    }
    return arr;
};

問題二

給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 行。 

可以 在上面的代碼 返回 arr[arr.length -1 ] 返回最後一個數組即可;

其他function (參考他人)如下

/**
 * @param {number} rowIndex
 * @return {number[]}
 */
var getRow = function(rowIndex) {
    // 方法一 
    // 先寫第一第二行 模板 第三行開始 用規律 計算
    if (rowIndex === 0) {
		return [1];
	}
	if (rowIndex === 1) {
		return [1,1];
	}
	let resultArr = [1,1];
	for (let i = 2; i < rowIndex + 1; i++) {
		let tempArr = [];
		for (let j = 0; j <= i; j++) {
			tempArr.push((j === 0 ? 0 : resultArr[j - 1]) + (j === i ? 0 : resultArr[j]))
		}
		resultArr = tempArr;
	}
	return resultArr;
    
    // 方法二
    // 給每個模板數組增加一個第一個元素爲 0 
    // let resultArr = [1];
	// for (let i = 0; i < rowIndex; i++) {
	// 	resultArr.unshift(0);
	// 	for (let j = 0; j < i + 1; j++) {
	// 		resultArr[j] = resultArr[j] + resultArr[j + 1];
	// 	}
	// }
	// return resultArr;
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章