35.数组-杨辉三角II-Leetcode 119(python)

63 篇文章 0 订阅
63 篇文章 0 订阅
  • 题目描述

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

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

  • 示例
输入: 3
输出: [1,3,3,1]
  • 解决思路

跟上一题,也就是杨辉三角的区别在于这一次只要求输出最后一行,因此我还是用上一题的思路,只是在输出时变化了一下。另外是发现如果不把第二行的[1,1]放入循环中算法的话,算法的效率好像一下子快了非常多,但是按理说不应该出现这种情况啊,因为range的范围从2开始和从3开始,也只差了一次迭代,怎么会有那么大的差异。没想明白。

另外是看评论才知道这个题的坑是有第0行的存在。

  • 代码
class Solution(object):
    def getRow(self, rowIndex):
        """
        :type rowIndex: int
        :rtype: List[int]
        """
        if rowIndex == 0:
            return [1]
        
        if rowIndex == 1:
            return [1,1]
        
        pre = [1,1]
        #不需要返回之前的行,那就不需要保存之前的行
        #result = [[1],[1,1]]
        for i in range(2,rowIndex+1):
            now = [1] *(i+1)
            for j in range(1,i):
                now[j] = pre[j-1] + pre[j]
            
            #result += [now]
            pre = now
        return now

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值