leedcode 杨辉三角-II

自己写的:

class Solution:
    def getRow(self, rowIndex: int):
        # 初始化一个列表以存储帕斯卡三角形的行
        li = []

        # 前两行是预定义的
        li.append([1])
        li.append([1, 1])

        # rowIndex为0和1的基本情况
        if rowIndex == 0:
            return [1]
        if rowIndex == 1:
            return [1, 1]

        # rowIndex为2的基本情况
        if rowIndex == 2:
            return [1, 2, 1]

        # 对于rowIndex大于等于3的情况
        if rowIndex >= 3:
            target = 3

            # 持续构建帕斯卡三角形直到目标rowIndex
            while target <= rowIndex + 1:
                temp = [0] * target
                temp[0] = li[target - 2][0]  # 第一个元素与前一行的第一个元素相同
                temp[-1] = li[target - 2][-1]  # 最后一个元素与前一行的最后一个元素相同

                # 通过将前一行的两个相应元素相加来计算中间元素
                for i in range(1, target - 1):  # 从索引1迭代到numrow-2
                    temp[i] = li[target - 2][i - 1] + li[target - 2][i]

                # 将当前行附加到列表中
                li.append(temp)
                target += 1

        # 返回指定rowIndex的行
        return li[rowIndex]

# 示例用法:
s = Solution().getRow(2)
print(s)

gpt改进:

class Solution:
    def getRow(self, rowIndex: int):
        # 初始化一个列表以存储帕斯卡三角形的行
        triangle = []

        # 前两行是预定义的
        triangle.append([1])
        triangle.append([1, 1])

        # 处理基本情况
        if rowIndex == 0:
            return triangle[0]
        elif rowIndex == 1:
            return triangle[1]

        # 从第三行开始构建帕斯卡三角形
        for target in range(2, rowIndex + 1):
            temp = [0] * (target + 1)
            temp[0], temp[-1] = 1, 1  # 设置首尾元素

            # 计算中间元素
            for i in range(1, target):
                temp[i] = triangle[target - 1][i - 1] + triangle[target - 1][i]

            triangle.append(temp)

        # 返回指定rowIndex的行
        return triangle[rowIndex]

# 示例用法:
s = Solution().getRow(2)
print(s)

 

posted @ 2024-02-24 19:03  Junior_bond  阅读(14)  评论(0)    收藏  举报