算法第三十天-矩阵中移动的最大次数

这篇具有很好参考价值的文章主要介绍了算法第三十天-矩阵中移动的最大次数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

矩阵中移动的最大次数

题目要求

算法第三十天-矩阵中移动的最大次数,算法基础,算法,python,leetcode

解题思路

网格图 DFS
从第一列的任一单元格 ( i , 0 ) (i,0) (i,0) 开始递归。枚举往右上/右/右下三个方向走,如果走一步后,没有出界,且格子值大于 g r i d [ i ] [ j ] grid[i][j] grid[i][j],则可以走,继续递归。

在递归过程中,记录能访问到的最大列号,作为答案。

代码实现时,为避免重复递归之前访问过的格子,可以用一个 v i s vis vis数组标记访问过的格子。但实际上,可以把 g r i d [ i ] [ j ] grid[i][j] grid[i][j]置为 0 0 0从而无需创建 v i s vis vis数组。这是因为网格值均为正数,并且我们只能访问到比当前格子值更大的格子,所以置为 0 0 0会导致永远无法访问到该格子,这正是我们所希望的。

代码

class Solution:
    def maxMoves(self, grid: List[List[int]]) -> int:
        m,n = len(grid), len(grid[0])
        ans = 0
        def dfs(i,j):
            nonlocal ans
            ans = max(ans,j)
            if ans == n -1:
                return
            for k in i-1, i, i+1:
                if 0<= k <m and grid[k][j+1] >grid[i][j]:
                    dfs(k,j+1)
            grid[i][j] = 0
        for i in range(m):
            dfs(i,0)
        return ans

复杂度分析

  • 时间复杂度: O ( m n ) O(mn) O(mn),其中 m m m n n n 分别为 g r i d grid grid 的行数和列数。每个格子至多递归一次。
  • 空间复杂度: O ( n ) O(n) O(n)。递归需要 O ( n ) O(n) O(n)的栈空间。

参考

灵茶山艾府文章来源地址https://www.toymoban.com/news/detail-842731.html

到了这里,关于算法第三十天-矩阵中移动的最大次数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言(第三十天)

    1. 什么是bug bug本意是昆虫”或“虫子”,现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问 题,简称程序漏洞。 “Bug” 的创始人格蕾丝·赫柏(Grace Murray Hopper),她是一位为美国海军工作的电脑专家, 1947年9月9日,格蕾丝·赫柏对Harvard Mark II设置好17

    2024年02月10日
    浏览(42)
  • 面试算法40:矩阵中的最大矩形

    请在一个由0、1组成的矩阵中找出最大的只包含1的矩形并输出它的面积。例如,在图6.6的矩阵中,最大的只包含1的矩阵如阴影部分所示,它的面积是6。 直方图是由排列在同一基线上的相邻柱子组成的图形。由于题目要求矩形中只包含数字1,因此将矩阵中上下相邻的值为1的

    2024年02月06日
    浏览(53)
  • 算法刷题Day 60 柱状图中的最大矩阵

    暴力解法 超时了 分别找出当前位置左边 第一个 比自己小的索引(的后一个位置)和右边 第一个 比自己小的索引(的前一个位置),这个范围之内,就是以当前位置的高度所能达到的最大宽度。 单调栈 有了接雨水那道题的经验,这一道题可以模仿着做出了

    2024年02月14日
    浏览(55)
  • 解密Python求矩阵秩的算法与实用指南:从基础到高阶方法

    在线性代数和计算机科学中,矩阵秩是一个重要的概念,它反映了矩阵中线性无关的行或列的数量,从而揭示了矩阵的重要性质。Python 作为一门强大的编程语言,提供了多种方法来求解矩阵的秩。本文将深入探讨 Python 中求解矩阵秩的算法,从基础的高斯消元法到高阶的 SV

    2024年02月09日
    浏览(56)
  • 学C的第三十天【自定义类型:结构体、枚举、联合】

    ========================================================================= 相关代码gitee自取 :C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 学C的第二十九天【字符串函数和内存函数的介绍(二)】_高高的胖子的博客-CSDN博客  ========

    2024年02月15日
    浏览(35)
  • [Kadane算法,前缀和思想]元素和最大的子矩阵

    题目描述 输入一个n级方阵,请找到此矩阵的一个子矩阵,此子矩阵的各个元素的和是所有子矩阵中最大的,输出这个子矩阵及这个最大的和。 关于输入 首先输入方阵的级数n, 然后输入方阵中各个元素。 关于输出 输出子矩阵, 最后一行输出这个子矩阵的元素的和。 例子输

    2024年02月03日
    浏览(36)
  • 最大子矩阵(openjudge noi-2.6基本算法之动态规划-1768)

    来源 OpenJudge - 1768:最大子矩阵 题目描述 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。 比如,如下4 * 4的矩阵  0        -2        -7        0  9         2        -6        2 -4      

    2024年04月26日
    浏览(41)
  • 【华为OD统一考试B卷 | 100分】最大矩阵和、最大子矩阵(C++ Java JavaScript Python)

    在线OJ 已购买本专栏用户,请私信博主开通账号,在线刷题!!! 运行出现 Runtime Error 0Aborted,请忽略 华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为OD统一考试(A卷)和OD统一考试(B卷)。 你收到的链接上面会标注A卷还是B卷。

    2024年02月08日
    浏览(47)
  • 图形学基础:二维三维刚体的移动、缩放和旋转矩阵

    1.1 缩放矩阵 x,y分别表示在x轴,y轴缩放的倍数 示例: 点(2,1)在x,y轴上分别缩放x倍,y倍 1.2 平移矩阵 x,y分表表示在x轴,y轴上移动的距离 示例:点(2,1)分别在x轴,y轴上平移x距离,y距离 1.3 旋转矩阵 示例:点(x,y) 绕原点逆时针旋转θ° 示例: 点 (2,0) 绕原点旋转90° 绕

    2024年04月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包