Python | Leetcode Python题解之第329题矩阵中的最长递增路径

news2024/9/20 18:44:31

题目:

题解:

class Solution:

    DIRS = [(-1, 0), (1, 0), (0, -1), (0, 1)]

    def longestIncreasingPath(self, matrix: List[List[int]]) -> int:
        if not matrix:
            return 0
        
        rows, columns = len(matrix), len(matrix[0])
        outdegrees = [[0] * columns for _ in range(rows)]
        queue = collections.deque()
        for i in range(rows):
            for j in range(columns):
                for dx, dy in Solution.DIRS:
                    newRow, newColumn = i + dx, j + dy
                    if 0 <= newRow < rows and 0 <= newColumn < columns and matrix[newRow][newColumn] > matrix[i][j]:
                        outdegrees[i][j] += 1
                if outdegrees[i][j] == 0:
                    queue.append((i, j))

        ans = 0
        while queue:
            ans += 1
            size = len(queue)
            for _ in range(size):
                row, column = queue.popleft()
                for dx, dy in Solution.DIRS:
                    newRow, newColumn = row + dx, column + dy
                    if 0 <= newRow < rows and 0 <= newColumn < columns and matrix[newRow][newColumn] < matrix[row][column]:
                        outdegrees[newRow][newColumn] -= 1
                        if outdegrees[newRow][newColumn] == 0:
                            queue.append((newRow, newColumn))
        
        return ans

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1994744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字人直播间搭建教程比较:哪种方案更可行?

当前&#xff0c;数字人直播的应用潜力不断显现&#xff0c;各大中小型企业对其关注度和接受度持续上升&#xff0c;连带着各种数字人直播间搭建教程的阅读量也日益上涨。而不少创业者也因此发现了它所蕴含的市场需求和收益空间&#xff0c;并有了通过为企业搭建数字人直播间以…

三防平板定制化:驱动产业高效化发展的新动能

在数字化转型的浪潮中&#xff0c;三防平板作为一种坚固耐用、功能强大的移动设备&#xff0c;正逐渐成为各行各业提升效率、优化管理的关键工具。通过硬件和软件的定制化服务&#xff0c;三防平板不仅能满足特定行业的需求&#xff0c;更能在复杂的工作环境中展现出卓越的性能…

haproxy实验

目录 为什么要用haproxy&#xff1f; haproxy的基本部署实验&#xff1a; 环境准备&#xff1a; 详细步骤&#xff1a; haproxy-多进程与多线程实验&#xff1a; haproxy的全局global配置实验&#xff1a; 为什么要用haproxy&#xff1f; LVS&#xff1a;没有后端检测&a…

Linux学习笔记:Linux基础知识汇总(kill 进程-vi编辑检索-查看当前文件夹的大小-修复硬盘等)

常见指令 Linux 的 find 命令可以用于在指定目录下查找符合条件的文件或目录。find 命令的基本语法为&#xff1a; find [path] [expression]其中&#xff0c;path 指定要查找的目录路径&#xff0c;expression 指定查找条件。下面是一些常用的 find 命令用法和示例&#xff…

代理IP在社媒营销中的重要作用

伴随着互联网的发展&#xff0c;社交媒体成了人们日常生活中不可或缺的一部分。用户在社交媒体中的活跃度和对内容的分享促进信息内容在短期内迅速传播&#xff0c;使得社交媒体变成了店家推广与销售的重要途径。 随着社交媒体用户基数的不断扩大和社交平台功能的日益丰富&…

煤炭行业信息化运维方案:基于一体化监控管理平台的探讨

随着煤炭行业信息化和智能化进程的加速&#xff0c;煤炭企业面临着前所未有的运维挑战。如何在复杂多变的IT环境中确保系统的稳定运行&#xff0c;提高运维效率&#xff0c;降低运营成本&#xff0c;成为煤炭企业亟待解决的问题。本文将以煤炭行业信息化运维现状为背景&#xf…

C#如何将自己封装的nuget包引入到项目中

问题 自己封装好了一个nuget包&#xff0c;但是不想上传到外网&#xff0c;想局域网使用&#xff0c;有两种方案 搭建私有nuget仓库放到离线文件夹中直接使用 第一种方式请请参考proget安装 下面主要是第二种方式 准备 新建类库项目 using System;namespace ClassLibrary…

怎样才算精通 Excel?

最强AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 高赞回答很系统&#xff0c;但普通人这么学&#xff0c;没等精通先学废了&#xff01; 4年前&#xff0c;我为了学数据分析&#…

关于低代码这一技术的杂谈

一、探讨低代码的定义 “Low-Code”是什么&#xff1f;身为技术人员听到这种技术名词&#xff0c;咱们第一反应就是翻看维基百科 或者其他相关技术论文&#xff0c;咱们想看维基百科的英文介绍&#xff1a; A low-code development platform (LCDP) provides a development e…

Angiopep-2;脑靶向多肽;TFFYGGSRGKRNNFKTEEY;CAS:906480-05-5

【Angiopep-2简介】 Angiopep-2是一种由19个氨基酸组成的多肽&#xff0c;它能够与低密度脂蛋白受体相关蛋白1&#xff08;LRP1&#xff09;特异性结合&#xff0c;通过内吞方式进入脑组织。这种多肽因其与LRP1的亲和力以及对血脑屏障的穿透能力而受到广泛关注&#xff0c;被认…

IF=12.5!孟德尔随机化,GWAS玩出花 | 孟德尔随机化周报(7.25-7.31)

孟德尔随机化,Mendelian Randomization&#xff0c;简写为MR&#xff0c;是一种在流行病学领域应用广泛的一种实验设计方法&#xff0c;利用公开数据库就能轻装上阵写文章&#xff0c;甚至是高质量的论文。 孟德尔随机化通过引入一个称之为工具变量的中间变量&#xff0c;来分析…

【C++】vector习题

一、杨辉三角 class Solution { public:vector<vector<int>> generate(int numRows) {} }; 这里给你一个vector<vector<int>>类型 也就是说vector中的各个数据&#xff0c;存的是各个不同的vector 思路&#xff1a;先给vector开空间&#xff0c;然后…

嘉德立为您解析任务调度控制台的核心功能

在当今高度信息化与自动化的时代背景下&#xff0c;任务调度控制台作为系统管理与运维的核心工具&#xff0c;正日益成为提升企业运营效率、保障业务连续性的关键所在。任务调度控制台&#xff0c;顾名思义&#xff0c;是一个集中管理、监控与调度各类任务的平台&#xff0c;它…

智能爬虫ScrapeGraphAI尝鲜

ScrapeGraphAI是一个创新的Python库&#xff0c;它融合了大型语言模型&#xff08;LLM&#xff09;和直接图逻辑&#xff0c;为用户提供了一种高效的方法&#xff0c;用于构建针对网站、文档和XML文件的爬虫流水线。以下是关于ScrapeGraphAI的详细介绍&#xff1a; 一、核心特…

【简历】黑龙某一本大学:JAVA秋招简历指导,面试通过率低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份25届黑龙江某一本大学的java简历。校招第一法则就是我们一定要先定求职层次&#xff0c;是大厂中厂还是小厂。因为校招时间点和…

达梦数据库(九) -------- JAVA 的连接配置方式

连接单机数据库配置如下&#xff1a; 集群配置连接如下&#xff1a; 在 dm_svc.conf 文件中配置服务名&#xff0c;通过服务名连接集群可实现故障自动重连。 Window 环境 Windows 平台 dm_svc.conf 文件位 %SystemRoot%\system32 目录下&#xff1a; Linux 环境 Linux 平台…

分布式任务调度与计算框架PowerJob

PowerJob是一款基于Java开发的企业级分布式任务调度与计算框架&#xff0c;它旨在为企业级应用提供统一的调度中心和分布式计算能力&#xff0c;从而简化任务调度的复杂性并降低分布式计算的门槛。 以下是对PowerJob的详细介绍&#xff1a; 一、主要功能特性 使用简单&#x…

Java面试题精选:消息队列(一)

1、为什么使用消息队列 问题用意&#xff1a; 其实就是想问一下消息队列有哪些使用场景&#xff0c;你项目中什么业务场景用到了消息队列&#xff0c;有什么技术挑战。使用MQ后给你带来了什么好处 规范回答&#xff1a; 消息队列的常见使用场景很多&#xff0c;但比较核心的…

WPF学习(12)-Image图像控件+GroupBox标题容器控件

Image图像控件 Image也算是独门独户的控件&#xff0c;因为它是直接继承于FrameworkElement基类。 Image控件就是图像显示控件。Image类能够加载显示的图片格式有.bmp、.gif、.ico、.jpg、.png、.wdp 和 .tiff。要注意的是&#xff0c;加载.gif动画图片时&#xff0c;仅显示第…

58 mysql 存储引擎之 MEMORY

前言 我们这里来看一下 MEMORY 存储引擎, 我们常见的那些 临时表什么的, 都是基于 MEMORY 在之前 我们也曾经调试过 相关内存临时表的信息 它主要是 使用 hp_scan, hp_find_record 等等 api 来操作内存中的信息 我们这里基于 information_schema.TABLES 这张基于 MEMORY 的…