公众号:爱写bug(ID:icodebugs)

作者:爱写bug

给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。

Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle.

Note that the row index starts from 0.

在杨辉三角中,每个数是它左上方和右上方的数的和。

In Pascal's triangle, each number is the sum of the two numbers directly above it.

示例:

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

进阶:

你可以优化你的算法到 O(k) 空间复杂度吗?

解题思路:

和之前写的那篇118号杨辉三角基本类似。这道题只是不用考虑每行输出,只输出最后一行。这样只在一个数组上修改即可:该数 的值 = 该数的值+该数左边的值之和(该数不包括第一个和最后一个数)。

这道题只是不用考虑每一行输出,只输出最后一行。这样只在一个数组上修改即可:该数 的值 = 该数的值+该数左边的值之和(该数不包括第一个和最后一个数)。

用两个嵌套循环,外循环是要计算的每行数组,内循环在上一次计算的数组基础上更改数值得出该行数组。

需要注意的是:内循环 j 指针应该从每行的最后一个数开始更改。

如果 j 指针从左开始更改索引的值:

[1]

[1,1]

[1,2,1] 索引1 的值是索引 0 和 1的和,没问题

[1,3,4,1] 索引2 的值是索引 2 和索引 1的和 为4,而不是预期的3

因为我们是在同一个数组里更改每个数值的,所以如果做左边开始求值,索引 1 的值会从2变为3,此时计算索引2的值,由于该索引左边的值已经改变为3,该索引将不再是预期值。

起先我用的是 ArrayList<Integer>()

class Solution {
public List<Integer> getRow(int rowIndex) {
List<Integer> nums = new ArrayList<Integer>();
nums.add(1);
for (int i = 1; i <= rowIndex; i++) {
for (int j = i - 1; j > 0; j--) {
nums.set(j, nums.get(j) + nums.get(j - 1));
}
nums.add(1);
System.out.println(nums);
}
return nums;
}
}

提交时虽然能通过但是每次调用 set()、add() 导致性能很差很差。

Java:

class Solution {
public List<Integer> getRow(int rowIndex) {
Integer[] nums = new Integer[rowIndex+1];//所有值被默认置为0
Arrays.fill(nums, 0);
nums[0] = 1;
for (int i = 1; i <= rowIndex; i++) {
for (int j = i; j >0; j--) {
nums[j] = nums[j] + nums[j-1];//当j为1时,nums[j]为0,不影响最后一个值,不用单独给每行末尾赋值1
}
}
return Arrays.asList(nums);//转为List<Integer>型并返回
}
}

Python3:

class Solution:
def getRow(self, rowIndex: int) -> List[int]:
nums = [1]
for i in range(1, rowIndex+1):
for j in range(i-1, 0, -1):
nums[j] +=nums[j-1]
nums.append(1) # 需要给末尾索引赋值1
return nums

LeetCode 118:杨辉三角 II Pascal's Triangle II的更多相关文章

  1. LeetCode 118. 杨辉三角

    118. 杨辉三角 给定一个非负整数numRows,生成杨辉三角的前numRows行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例 输入: 5 输出: [ [1], [1,1], [1,2 ...

  2. Java实现 LeetCode 118 杨辉三角

    118. 杨辉三角 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出: [ [1], [1,1], ...

  3. leetcode 118. 杨辉三角(python)

    给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5输出:[ [1], [1,1], [1,2,1], [1, ...

  4. 算法:杨辉三角(Pascal's Triangle)

    一.杨辉三角介绍 杨辉三角形,又称帕斯卡三角形.贾宪三角形.海亚姆三角形.巴斯卡三角形,是二项式系数的一种写法,形似三角形,在中国首现于南宋杨辉的<详解九章算法>得名,书中杨辉说明是引自贾 ...

  5. LeetCode:杨辉三角【118】

    LeetCode:杨辉三角[118] 题目描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出: ...

  6. 杨辉三角形II(Pascal's Triangle II)

    杨辉三角形II(Pascal's Triangle II) 问题 给出一个索引k,返回杨辉三角形的第k行. 例如,给出k = 3,返回[1, 3, 3, 1] 注意: 你可以优化你的算法使之只使用O( ...

  7. 【LeetCode】119. 杨辉三角 II Pascal‘s Triangle II(Python & Java)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题思路 方法一: 空间复杂度 O ( k ∗ ( k + 1 ...

  8. [Swift]LeetCode119. 杨辉三角 II | Pascal's Triangle II

    Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle. Note t ...

  9. Java实现 LeetCode 119 杨辉三角 II

    119. 杨辉三角 II 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 进阶: ...

随机推荐

  1. 10道Python常见面试题

    1.MySQL索引种类 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 2.索引在什么情况下遵循最左前缀的规则? 最左前缀原理的一部分,索引index1:(a,b,c),只会走a ...

  2. Linux目录和文件——查询目录和文件的命令

    Linux目录和文件——查询目录和文件的命令 摘要:本文主要学习了在Linux系统中是如何查询目录和文件的. which命令 which命令是根据PATH环境变量设置的路径,去搜索执行文件. 基本语法 ...

  3. CSS颜色、单位、文本样式

    一.CSS颜色:关键字 red16进制的6位 #ffffff16进制的3位 #fffrgb(0,255,100) 取值范围:0~255 (r:red.g:green.b:blue)rgba(0,255 ...

  4. 图解Java数据结构之双向链表

    上一篇文章说到了单链表,也通过案例具体实现了一下,但是单链表的缺点也显而易见. 单向链表查找的方向只能是一个方向 单向链表不能自我删除,需要靠辅助节点 而双向链表则能够很轻松地实现上面的功能. 何为双 ...

  5. Oracle client 安装、配置

     一.安装 链接: https://pan.baidu.com/s/1Yph6hiNkCJsApAzu_Vx2ew 提取码: r9ye 二.配置 1.控制面板\所有控制面板项\管理工具\数据源(ODB ...

  6. 如何解决问题:程序无法正常启动(0xc0000022)

    如何解决问题:程序无法正常启动(0xc0000022) 下文是由NeoSmart技术,通过全球网络上的工程师开发者和技术人员一起收集起来的信息,进行汇总并编辑而成的. 错误现象 该错误一般会通过警告, ...

  7. Eyoo大学生交友平台

    团队简介 团队名称 golden express 队员学号列表 王伟 201731062214 刘冬 201731062227 张旭 201731062129 秦裕航 201731062432 (组长 ...

  8. 201871010126 王亚涛 《面向对象程序设计 Java》 第十五周学习总结

    内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11 ...

  9. python27期day09:函数的初始、函数的定义、函数的调用、函数的返回值、函数的参数、作业题。

    1.函数的作用:封装代码.大量的减少了重复的代码. 2.全局空间:顶行写的就是全局空间. 图解 : 3.函数的定义: def 是一个关键字.申明要定义一个函数 my_len 函数的名字.遵循变量命名的 ...

  10. zz先睹为快:神经网络顶会ICLR 2019论文热点分析

    先睹为快:神经网络顶会ICLR 2019论文热点分析 - lqfarmer的文章 - 知乎 https://zhuanlan.zhihu.com/p/53011934 作者:lqfarmer链接:ht ...