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;
};

 

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