博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pascal's Triangle II
阅读量:5926 次
发布时间:2019-06-19

本文共 1576 字,大约阅读时间需要 5 分钟。

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

For example, given k = 3,

Return [1,3,3,1].

为给出行数,求所有结果,这题是给出任意行号,求该行的结果。 

Pascal's Triangle本身需要返回二维结果,可以在二维数组上直接操作。但是这题需要返回一维的结果,直接采用之前的思路是不太好的。所以此处采用一个滚动数组,用数组的变化去不断模拟从上到下的每一行。具体处理时的顺序值得处理,一种是从左到右,但是实际res[n][j]=res[n-1][j]+res[n-1][j-1]。从前往后走存在值覆盖的问题,需要用到中间变量。另外一种是,根据这种转化关系,从右往左扫。当前值的处理不会影响下一步的操作,因为下一步的操作只涉及到更之前的值。

从左到右,44ms,代码:

class Solution(object):    def getRow(self, rowIndex):        """        :type rowIndex: int        :rtype: List[int]        """        if not rowIndex:            return [1]        row = [1,1]        for i in range(1,rowIndex):            prev = 1            for j in range(1,i+1):                tmp = row[j]                row[j] += prev                prev = tmp            row.append(1)                return row

 

从右到左,40ms,代码:

class Solution(object):    def getRow(self, rowIndex):        """        :type rowIndex: int        :rtype: List[int]        """        if not rowIndex:            return [1]        row = [1]        for i in range(1,rowIndex+1):            for j in range(i-2,-1,-1):                row[j+1] +=row[j]             row.append(1)        return row

从右往左有一个更优解法,减少了一步迭代,然而目前还没看懂,也附上代码:

class Solution(object):    def getRow(self, rowIndex):        """        :type rowIndex: int        :rtype: List[int]        """        array = [1]*(rowIndex+1)        for i in range(1,rowIndex+1):            for j in range(i-1,0,-1):                array[j] += array[j-1]        return array

 这题设计空间使用的考察,可能会出现在电面中。

转载于:https://www.cnblogs.com/sherylwang/p/5448854.html

你可能感兴趣的文章
PaaS平台走开放、开源之路
查看>>
搞大流量很难,但搞精准流量很容易
查看>>
EBS维护常识
查看>>
vs 附加到进程
查看>>
《Microsoft SQL Server 2008 Analysis Services Step by Step》学习笔记六:创建高级度量和计算(下)...
查看>>
【原】windows 7 安装 PetShop 4.0 问题小结
查看>>
0 bytes after compression出现的情况
查看>>
60佳精美的绿色风格网页设计欣赏(上篇)
查看>>
如何使用本地账户"完整"安装 SharePoint Server
查看>>
十分钟掌握diff&patch用法(转)
查看>>
怎么在ASP.NET WebForm中使用Razor视图引擎(转载)
查看>>
图片自动随div大小改变
查看>>
(译)在Objective-c里面使用property教程
查看>>
Android --- 图片的特效处理
查看>>
PL SQL 9 安装 并连接 64位 Oracle 11G
查看>>
ASP.NET FormsAuthentication跨站点登录时绝对地址返回的问题
查看>>
【译】在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本
查看>>
UVA 620 Cellular Structure
查看>>
opencv识别三角形代码(转)
查看>>
配置监听非默认端口(1521)的em
查看>>