JS 刷 Leetcode:119.杨辉三角 II

简介: JS 刷 Leetcode:119.杨辉三角 II

1.题目

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:

输入: rowIndex = 3
输出: [1,3,3,1]

示例 2:

输入: rowIndex = 0
输出: [1]

示例 3:

输入: rowIndex = 1
输出: [1,1]

提示:

  • 0 <= rowIndex <= 33

2. 解一

因为上一步Javascript刷LeetCode:118.杨辉三角我们直接生成了「杨辉三角」的前 numRows 行。
而取第 rowIndex 行就简单多了

/**
 * @param {number} rowIndex
 * @return {number[]}
 */
 var getRow = function(rowIndex) {
  const result = []
  if(rowIndex + 1 >= 1) {
    result[0] = [1]
  }
  for(let i = 1; i < rowIndex + 1; i++) {
    const row = []
    for(let j = 0; j < i + 1; j++) {
      if(j === 0 || j === i ) {
        row[j] = 1
      } else {
        row[j] = result[i - 1][j-1] + result[i - 1][j]
      }
    }
    result[i] = row
  }
  return result[rowIndex]
};

image.png
复杂度分析

  • 时间复杂度:O(rowIndex2)。
  • 空间复杂度:O(1)。不考虑返回值的空间占用。

3. 解二

好吧,我承认,下面这种解法我是看了答案才知道的,因为只要知道一条组合数公式就能解决,奈何本菜鸡数学已经全还给老师了😮‍💨
反正我到现在也还没搞懂这公式是怎么出来的。有懂哥可以留言一下哈。

  • 公式就是

$$ row[m][n] = row[m][n-1] * (n - m + 1) / m $$

var getRow = function(rowIndex) {
    const row = new Array(rowIndex + 1).fill(0);
    row[0] = 1;
    for (let i = 1; i <= rowIndex; ++i) {
        row[i] = row[i - 1] * (rowIndex - i + 1) / i;
    }
    return row;
};

复杂度分析

  • 时间复杂度:O(\textit{rowIndex})O(rowIndex)。
  • 空间复杂度:O(1)O(1)。不考虑返回值的空间占用。
相关文章
|
机器学习/深度学习 JavaScript 前端开发
LeetCode 51.N皇后(JavaScript 解题)
LeetCode 51.N皇后(JavaScript 解题)
68 0
|
8月前
leetcode代码记录(杨辉三角
leetcode代码记录(杨辉三角
49 1
|
7月前
|
缓存 算法 数据可视化
LeetCode 题目 119:杨辉三角 II
LeetCode 题目 119:杨辉三角 II
|
7月前
|
存储 SQL 算法
LeetCode 题目 118:杨辉三角
LeetCode 题目 118:杨辉三角
|
JavaScript 前端开发
leetcode 1418.点菜展示表(JavaScript)
leetcode 1418.点菜展示表(JavaScript)
46 0
|
JavaScript 前端开发 算法
LeetCode 37.解数独(注释完整+JavaScript解题)
LeetCode 37.解数独(注释完整+JavaScript解题)
96 0
|
JavaScript 前端开发
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
|
算法
【LeetCode】136. 只出现一次的数字、118. 杨辉三角
目录 136. 只出现一次的数字 118. 杨辉三角
57 0
leetcode:118. 杨辉三角
函数原型:int** generate(int numRows, int* returnSize, int** returnColumnSizes) 参数解析:numRows是指明要求前几行杨辉三角 returnSize是返回指针数组的元素个数 returnColumnSizes是指明杨辉三角每一行有几个元素
79 0
|
JavaScript 前端开发
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ

热门文章

最新文章