矩阵中的最长递增路径
题目链接
矩阵中的最长递增路径
题目描述
注意点
- 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)
解答思路
- 因为最长递增路径一定是连续的,所以想到使用深度优先遍历来做。如果只使用深度优先遍历会导致超时(同一个节点的最长递增路径可能会计算多次),所以考虑引入动态规划存储每个节点的最长递增路径。除此之外,还要进行剪枝,主要是解决边界问题和移动后的值小于当前值的情况
代码
class Solution {int row;int col;int[][] directions;public int longestIncreasingPath(int[][] matrix) {int res = 0;row = matrix.length;col = matrix[0].length;directions = new int[][] {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};int[][] dp = new int[row][col];for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {res = Math.max(res, findMaxPath(matrix, dp, i, j));}}return res;}public int findMaxPath(int[][] matrix, int[][] dp, int i, int j) {if (dp[i][j] != 0) {return dp[i][j];}int maxPath = 0;for (int[] direction : directions) {int x = i + direction[0];int y = j + direction[1];if (x < 0 || x >= row || y < 0 || y >= col) {continue;}if (matrix[x][y] <= matrix[i][j]) {continue;}maxPath = Math.max(maxPath, findMaxPath(matrix, dp, x, y));}dp[i][j] = maxPath + 1;return dp[i][j];}
}
关键点
- 深度优先遍历的思想
- 动态规划的思想
- 注意边界问题
相关文章:
矩阵中的最长递增路径
题目链接 矩阵中的最长递增路径 题目描述 注意点 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕) 解答思路 因为最长递增路径一定是连续的,所以想到使用深度优先遍历来做。如果只使用深度优先遍历会导致超时(同一个…...
vue2 element 弹出框拖拽会出现一层阴影问题
问题如图所示: 因增加 draggable 属性导致我弹窗表单清空文本框时,从右向左选中字体会出现拖拽阴影效果 去掉 draggable 即可 <template><div class"sys-jobTrigger-container"><el-dialog:visible.sync"state.isShowD…...
idea git回滚之前提交记录
提交代码时,如果不小心提交了不需要提交的内容,在本地仓库中,此时需要回滚版本,如何回滚 1.打开git控制台,左下角git,选择要处理的分支,选择刷新获取最新git提交记录 2)选中自己commit需要回滚…...
什么是Modbus协议?
Modbus协议是一种在工业自动化领域广泛应用的通信协议,它允许不同设备之间进行可靠的数据交换和控制。该协议最初由Modicon公司于1979年创建,旨在提供一种简单而有效的方法,使PLC(可编程逻辑控制器)和其他自动化设备能…...
222.【2023年华为OD机试真题(C卷)】分配土地(扫描线算法-JavaPythonC++JS实现)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-分配土地二.解题思路三.题解代码Python题解代码…...
Linux网络编程(一-网络相关知识点)
目录 一、网络相关知识简介 二、网络协议的分层模型 2.1 OSI七层模型 2.2 TCP/IP五层模型 2.3 协议层报文间的封装与拆封 三、IP协议 3.1 MAC地址 3.2 IP地址 3.3 MAC地址与IP地址区别 一、网络相关知识简介 互联网通信的本质是数字通信,任何数字通信都离…...
IO进程线程day5
1.实现互斥机制 #include <head.h>char buf[128]; //全局数组,临界资源//1、创建一个互斥锁 pthread_mutex_t mutex;//定义分支线程 void *task(void *arg) {while(1){//3、获取锁资源pthread_mutex_lock(&mutex);printf("分支线程中&…...
读元宇宙改变一切笔记04_网络化
1. 思想实验 1.1. 如果森林中的一棵树倒下,但周围没有人听到,那它是否会发出声音? 1.1.1. “贝克莱的树” 1.2. 主观唯心主义哲学家乔治贝克莱(George Berkeley)提出的,他认为“存在就是被感知” 1.2.1. 如果有人或有其他事物…...
用Promise实现util函数
有些时候,我们需要依赖于异步的返回结果做一些后续处理,until函数在这种场景下非常有用,你能实现它吗 ? 让我们来试试吧 👇: <script setup langts> import { ref,watch } from "vue"const count ref(0)/*** I…...
使用numpy处理图片——白色背景变全透明
在《使用numpy处理图片——基础操作》一文中,我们通过对所有像素的alpha值做修改,让图片变成半透明。 我们看到本来是黑色的字体也因为半透明的原因变得颜色比较淡。 本文我们将判断每个像素的RGB值。如果是纯白底色,则将该像素的alpha值调…...
计算机网络层之ICMP与IGMP
计算机网络传输层协议有:tcp和udp,这两个接触最多,较为熟悉。除此之外,还有ICMP和IGMP,我们接触较少。 ICMP(Internet Control Message Protocol)和IGMP(Internet Group Management Protocol)是…...
FlinkAPI开发之自定义函数UDF
案例用到的测试数据请参考文章: Flink自定义Source模拟数据流 原文链接:https://blog.csdn.net/m0_52606060/article/details/135436048 概述 用户自定义函数(user-defined function,UDF),即用户可以根据…...
阿里云国际服务器设置安全防护程序
阿里云云服务器(ECS)提供弹性、安全、高性能、高性价比的虚拟云服务器,满足您的所有需求。立即在这里免费注册! 常见 Web 应用程序 请勿对 Web 服务控制台(如 WDCP、TOMCAT、Apache、Nginx、Jekins、PHPMyAdmin、Web…...
C++获取内存使用情况
在程序编程过程中,为了防止出现内存泄漏情况出现,需要持续关注内存程序内存占用情况。如下方式实现获取当前进程内存使用情况: linux: void my_top(string path, bool flag) {if(flag){FILE* read_top fopen("/proc/self/…...
CRMEB多商户短信开发
在使用CRMEB多商户系统的时候,想要二开使用其他平台的短信,这里以阿里云短信为例的具体实现方法。 一、加载阿里云短信的SDK,执行命令:composer require alibabacloud/dysmsapi-20170525 二、增加阿里云短信的驱动 1.在 crmeb\…...
Leetcode 1049 最后一块石头的重量II
题意理解: 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x < y。 思路转化:我们可…...
【设计模式之美】SOLID 原则之二:开闭原则方法论、开闭原则如何取舍
文章目录 一. 如何理解“对扩展开放、修改关闭”?二. 修改代码就意味着违背开闭原则吗?三. 如何做到“对扩展开放、修改关闭”?四. 如何在项目中灵活应用开闭原则? 一. 如何理解“对扩展开放、修改关闭”? 具体的说&a…...
Kafka 基本概念和术语
1、消息 Record:Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。 2、主题 Topic:主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。在Kafka 中发布订阅的对象是 Topic。 3、分区 Partition…...
【每日面试题】Docker常见面试题精选
什么是Docker容器? Docker容器是一种轻量级的虚拟化技术,可以将应用及其依赖项打包在一个可移植的容器中,以便在多个环境中运行。 Docker镜像和容器之间有什么区别? Docker镜像是一个包含了应用程序及其依赖项的只读模板…...
uniapp项目怎么删除顶部导航栏
uniapp去掉顶部导航的方法: 1、去掉所有导航栏 "globalStyle": { "navigationBarTextStyle": "white", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#007AFF"…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...

