鱼C论坛

 找回密码
 立即注册
查看: 1687|回复: 2

[已解决]杨辉三角

[复制链接]
发表于 2023-10-9 22:32:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:

输入: numRows = 1
输出: [[1]]
class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        def a(x):   
            if x == 1:
                return [[1]]
            elif x == 2:
                return [[1],[1,1]]
            elif x == 3:
                return [[1],[1,1],[1,2,1]]
            elif x == 4:
…                    else:
                        pass


                return a(x-1) + result
        return a(numRows)
为什么我的代码报错了
最佳答案
2023-10-9 22:32:34
您的代码有一些问题,我将为您解释并提供一个修复后的版本。首先,您的代码中有一些不必要的条件判断,这些条件判断可以通过一个更通用的循环来替代。其次,您的代码中有一个未定义的变量 result。最后,您的代码缺少了一个递归的基本情况。

以下是一个修复后的代码示例:
from typing import List

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if numRows == 0:
            return []
        elif numRows == 1:
            return [[1]]
        else:
            triangle = [[1], [1, 1]]
            for i in range(2, numRows):
                row = [1]
                for j in range(1, i):
                    row.append(triangle[i - 1][j - 1] + triangle[i - 1][j])
                row.append(1)
                triangle.append(row)
            return triangle

这个修复后的代码使用了一个循环来生成杨辉三角的每一行,而不是使用多个条件判断。这使得代码更简洁,更易于理解。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-9 22:32:34 | 显示全部楼层    本楼为最佳答案   
您的代码有一些问题,我将为您解释并提供一个修复后的版本。首先,您的代码中有一些不必要的条件判断,这些条件判断可以通过一个更通用的循环来替代。其次,您的代码中有一个未定义的变量 result。最后,您的代码缺少了一个递归的基本情况。

以下是一个修复后的代码示例:
from typing import List

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if numRows == 0:
            return []
        elif numRows == 1:
            return [[1]]
        else:
            triangle = [[1], [1, 1]]
            for i in range(2, numRows):
                row = [1]
                for j in range(1, i):
                    row.append(triangle[i - 1][j - 1] + triangle[i - 1][j])
                row.append(1)
                triangle.append(row)
            return triangle

这个修复后的代码使用了一个循环来生成杨辉三角的每一行,而不是使用多个条件判断。这使得代码更简洁,更易于理解。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-9 22:32:46 | 显示全部楼层
这段代码的问题在于它只考虑了前三行的情况,而没有考虑更多的行。此外,代码中的变量 result 没有被定义。正确的实现应该使用循环来生成杨辉三角的每一行,并将每一行添加到结果列表中。以下是一个可能的实现:
class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if numRows == 0:
            return []
        result = [[1]]
        for i in range(1, numRows):
            row = [1]
            for j in range(1, i):
                row.append(result[i-1][j-1] + result[i-1][j])
            row.append(1)
            result.append(row)
        return result

这个实现首先处理 numRows 为 0 的情况(返回一个空列表)。然后,它初始化结果列表为包含第一行的列表 [[1]]。接下来,它使用循环来生成每一行。对于第 i 行(从 0 开始计数),它首先将 1 添加到行的开头。然后,对于行中的每个位置 j(从 1 到 i-1),它将上一行中的相邻两个元素相加,并将结果添加到当前行中。最后,它将 1 添加到行的结尾,并将该行添加到结果列表中。最后,它返回结果列表。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-13 14:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表