返回轨道
算法 · 2026-05-14 · 20 阅读

P219 帕斯卡三角形的第 K 行

算法 20 阅读

信号摘要

难度:Easy · 时长:07:21 · leetcode 119 · lintcode 1354

P219 帕斯卡三角形的第 K 行

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个非负整数 k,你要返回帕斯卡三角形的第 k 行。其中,k 从 0 开始算起。

帕斯卡三角形又称为杨辉三角形,它的特点是左右两条边上的数字都为 1,其它位置的数字等于左上方与右上方的两个数字之和。

以下是帕斯卡三角形的前 5 行:
 [1],
[1,1],

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

比如说 k = 0,你要返回:

[1]

再比如说 k = 3,你要返回:

[1, 3, 3, 1]

相关视频:帕斯卡三角形

代码

public class AlgoCasts {

  // Time: O(k^2), Space: O(k^2)
  public List<Integer> getRow(int k) {
    List<List<Integer>> triangle = new ArrayList<>();
    for (int i = 0; i <= k; ++i) {
      List<Integer> row = Arrays.asList(new Integer[i+1]);
      row.set(0, 1); row.set(i, 1);
      for (int j = 1; j < i; ++j)
        row.set(j, triangle.get(i-1).get(j-1) + triangle.get(i-1).get(j));
      triangle.add(row);
    }
    return triangle.get(k);
  }

  // Time: O(k^2), Space: O(1)
  public List<Integer> getRowO1Space(int k) {
    Integer[] row = new Integer[k+1];
    row[0] = 1;
    for (int i = 0; i <= k; ++i) {
      row[i] = 1;
      for (int j = i-1; j > 0; --j)
        row[j] = row[j-1] + row[j];
    }
    return Arrays.asList(row);
  }

}

📡 通讯频道