动态规划编程题螺旋矩阵python解法

  • class Solution:def spiralMatrixIII(self, rows, cols, rStart, cStart):# 初始化结果列表并将起始位置加入结果res = [(rStart, cStart)]
  •     # 如果结果列表的长度等于总的单元格数,直接返回结果
        if rows * cols == 1:
            return res
    
        # 初始化步长和方向
        step = 1
        dirs = [(0, 1), (1, 0), (0, -1), (-1, 0)]  # 右、下、左、上
        r, c = rStart, cStart
        di = 0  # 当前方向索引
        
        # 循环直到结果列表的长度等于总的单元格数
        while len(res) < rows * cols:
            # 遍历当前步长,移动相应的次数
            for _ in range(step):
                # 更新当前位置
                r += dirs[di][0]
                c += dirs[di][1]
                
                # 如果当前位置在网格范围内,加入结果列表
                if 0 <= r < rows and 0 <= c < cols:
                    res.append((r, c))
            
            # 改变移动方向
            di = (di + 1) % 4
            
            # 每两次改变方向后,步长加1
            if di == 0 or di == 2:
                step += 1
    
        return res
    
    

    示例输入

    rows = 5cols = 6rStart = 1cStart = 4

    创建Solution对象并调用方法

    solution = Solution()result = solution.spiralMatrixIII(rows, cols, rStart, cStart)print(result)

    #动态规划#
    全部评论
    这跟动态规划有什么关系?
    点赞 回复 分享
    发布于 2024-11-03 10:19 北京

    相关推荐

    在开会的单身狗很有一套:学院本被想着这么快有面试,而且简历废话太多了 那些在校经历什么荣誉什么的企业不关心
    点赞 评论 收藏
    分享
    叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
    点赞 评论 收藏
    分享
    评论
    点赞
    收藏
    分享

    创作者周榜

    更多
    牛客网
    牛客网在线编程
    牛客网题解
    牛客企业服务