题目

Given an index k, return the kth row of the Pascal's triangle.

For example, given k = 3,
Return [1,3,3,1].

Note:
Could you optimize your algorithm to use only O(k) extra space?

代码:oj测试通过 Runtime: 48 ms

 class Solution:
# @return a list of integers
def getRow(self, rowIndex):
if rowIndex == 0:
return [1]
if rowIndex == 1:
return [1,1]
pascal = [1,1]
for i in range(1,rowIndex):
for j in range(len(pascal)-1):
pascal[j] = pascal[j] + pascal[j+1]
pascal.insert(0,1)
return pascal

思路:

先把special case单列出来

每轮迭代从前向后更新数组的每个元素

最后再在第一位补上一个1

另,网上有很多题解是每轮从后往前遍历,这样的效率似乎更高一些。

后续又把遍历的顺序改为由后向前,结果如下

oj测试通过  Runtime: 37 ms

代码

 class Solution:
# @return a list of integers
def getRow(self, rowIndex):
if rowIndex == 0:
return [1]
if rowIndex == 1:
return [1,1]
pascal = [1,1] # from start to end
#for i in range(1,rowIndex):
# for j in range(len(pascal)-1):
# pascal[j] = pascal[j] + pascal[j+1]
# pascal.insert(0,1) # from end to start
for i in range(1, rowIndex):
for j in range(len(pascal)-1, 0, -1):
pascal[j] = pascal[j] + pascal[j-1]
pascal.insert(len(pascal),1)
return pascal

确实从后向前遍历比从前向后遍历要快很多。

小白对Python原理不懂,分析可能的原因如下:

1. 在数据起始位置insert,需要改变数组后续所有元素在内存中的位置,因此耗时长?

2. 在数组末尾insert,不需要改变数组之前所有元素在内存中的位置,只补上最后一个新增元素的位置就行了,因而速度快?

leetcode 【 Pascal's Triangle II 】python 实现的更多相关文章

  1. [leetcode]Pascal's Triangle II @ Python

    原题地址:https://oj.leetcode.com/problems/pascals-triangle-ii/ 题意: Given an index k, return the kth row ...

  2. LeetCode Pascal's Triangle && Pascal's Triangle II Python

    Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, given ...

  3. 学会从后往前遍历,例 [LeetCode] Pascal's Triangle II,剑指Offer 题4

    当我们需要改变数组的值时,如果从前往后遍历,有时会带来很多麻烦,比如需要插入值,导致数组平移,或者新的值覆盖了旧有的值,但旧有的值依然需要被使用.这种情况下,有时仅仅改变一下数组的遍历方向,就会避免这 ...

  4. LeetCode: Pascal's Triangle II 解题报告

    Pascal's Triangle II Total Accepted: 19384 Total Submissions: 63446 My Submissions Question Solution ...

  5. 119. Pascal's Triangle II@python

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

  6. [LeetCode] Pascal's Triangle II 杨辉三角之二

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

  7. LeetCode - Pascal's Triangle II

    题目: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return ...

  8. LeetCode——Pascal's Triangle II

    Description: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3 ...

  9. leetcode:Pascal's Triangle II【Python版】

    1.将tri初始化为[1],当rowIndex=0时,return的结果是:1,而题目要求应该是:[1],故将tri初始化为[[1]],返回结果设置为tri[0]即可满足要求: 2.最开始第二层循环是 ...

  10. leetcode:Pascal's Triangle【Python版】

    1.这道题一次提交就AC了: 2.以前用C语言实现的话,初始化二维数组全部为0,然后每行第一个元素为1,只需要用a[i][j] = a[i-1][j]+a[i-1][j-1]就可以了: 3.在Pyth ...

随机推荐

  1. windows安装ipython

    一.安装python2.71.下载地址https://www.python.org/downloads/2.安装后修改本地变量-右击电脑-属性-高级系统设置-环境变量-用户变量-新建-变量名:path ...

  2. MyBatis源码探索

    每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的.SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获 ...

  3. 更新浏览器,导致编写脚本报错Message: Unable to find a matching set of capabilities

    卸载更新浏览器后,所编写的脚本无法运行,报如下的错误:selenium.common.exceptions.WebDriverException: Message: Unable to find a ...

  4. RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍

    1. AMF AMF(是Action Message Format的缩写)是在flash和flex中与远程服务端交换数据的一种格式.它是二进制格式,Flash应用与服务端或数据库通过RPC交换数据时, ...

  5. help.hybris.com和help.sap.com网站的搜索实现

    help.hybris.com 我使用help.hybris.com时,发现每次在搜索栏输入文字时,没有发出任何HTTP请求,那么这个自动完成的下拉框里的记录从哪里来的?我看了下实现,发现所有自动完成 ...

  6. hdu-1317 XYZZY---Floyd判连通+bellman最短路

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1317 题目大意: 题意:有n个房间(n<=100),每个房间有一个点权(第1号房间和第n号房间 ...

  7. 【洛谷2152】[SDOI2009] SuperGCD(Python好题)

    点此看题面 大致题意: 给你两个长度\(\le10000\)的正整数,让你求它们的\(gcd\). Python​ 高精请绕道. 这题的正解应该是Python. 对于这种高精题,肯定是Python最方 ...

  8. DongDong跳一跳

    题目连接:https://ac.nowcoder.com/acm/contest/904/C 题意很好理解,思路想歪了,本来一道很简单的题,写了好久没写出来. 思路就是找每一个高度最大值的时候就是找“ ...

  9. python序列化(数据本地存放持久性存储)和反序列化

    http://blog.csdn.net/uestcyao/article/details/7874817 #读取图片并存储为矩阵 from scipy.misc import imread im = ...

  10. sqlldr将txt导入oracle数据库

    注意事项: 1.userid 和 control关键字不要缺少: 2.注意数据库格式:test/test@数据库IP:1521/Oracle8,最后一个是tnsnames中的service_name, ...