鱼C论坛

 找回密码
 立即注册
查看: 2653|回复: 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。最后,您的代码缺少了一个递归的基本情况。

以下是一个修复后的代码示例:

  1. from typing import List

  2. class Solution:
  3.     def generate(self, numRows: int) -> List[List[int]]:
  4.         if numRows == 0:
  5.             return []
  6.         elif numRows == 1:
  7.             return [[1]]
  8.         else:
  9.             triangle = [[1], [1, 1]]
  10.             for i in range(2, numRows):
  11.                 row = [1]
  12.                 for j in range(1, i):
  13.                     row.append(triangle[i - 1][j - 1] + triangle[i - 1][j])
  14.                 row.append(1)
  15.                 triangle.append(row)
  16.             return triangle
复制代码


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

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

以下是一个修复后的代码示例:

  1. from typing import List

  2. class Solution:
  3.     def generate(self, numRows: int) -> List[List[int]]:
  4.         if numRows == 0:
  5.             return []
  6.         elif numRows == 1:
  7.             return [[1]]
  8.         else:
  9.             triangle = [[1], [1, 1]]
  10.             for i in range(2, numRows):
  11.                 row = [1]
  12.                 for j in range(1, i):
  13.                     row.append(triangle[i - 1][j - 1] + triangle[i - 1][j])
  14.                 row.append(1)
  15.                 triangle.append(row)
  16.             return triangle
复制代码


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

使用道具 举报

发表于 2023-10-9 22:32:46 | 显示全部楼层
这段代码的问题在于它只考虑了前三行的情况,而没有考虑更多的行。此外,代码中的变量 result 没有被定义。正确的实现应该使用循环来生成杨辉三角的每一行,并将每一行添加到结果列表中。以下是一个可能的实现:

  1. class Solution:
  2.     def generate(self, numRows: int) -> List[List[int]]:
  3.         if numRows == 0:
  4.             return []
  5.         result = [[1]]
  6.         for i in range(1, numRows):
  7.             row = [1]
  8.             for j in range(1, i):
  9.                 row.append(result[i-1][j-1] + result[i-1][j])
  10.             row.append(1)
  11.             result.append(row)
  12.         return result
复制代码


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-24 20:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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