动态规划编程题螺旋矩阵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 北京

    相关推荐

    来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
    点赞 评论 收藏
    分享
    评论
    点赞
    收藏
    分享

    创作者周榜

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