当前位置: 首页 > news >正文

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

题目:

题解:

var (dirs = [][]int{[]int{-1, 0}, []int{1, 0}, []int{0, -1}, []int{0, 1}}rows, columns int
)func longestIncreasingPath(matrix [][]int) int {if len(matrix) == 0 || len(matrix[0]) == 0 {return 0}rows, columns = len(matrix), len(matrix[0])outdegrees := make([][]int, rows)for i := 0; i < rows; i++ {outdegrees[i] = make([]int, columns)}for i := 0; i < rows; i++ {for j := 0; j < columns; j++ {for _, dir := range dirs {newRow, newColumn := i + dir[0], j + dir[1]if newRow >= 0 && newRow < rows && newColumn >= 0 && newColumn < columns && matrix[newRow][newColumn] > matrix[i][j] {outdegrees[i][j]++}}}}queue := [][]int{}for i := 0; i < rows; i++ {for j := 0; j < columns; j++ {if outdegrees[i][j] == 0 {queue = append(queue, []int{i, j})}}}ans := 0for len(queue) != 0 {ans++size := len(queue)for i := 0; i < size; i++ {cell := queue[0]queue = queue[1:]row, column := cell[0], cell[1]for _, dir := range dirs {newRow, newColumn := row + dir[0], column + dir[1]if newRow >= 0 && newRow < rows && newColumn >= 0 && newColumn < columns && matrix[newRow][newColumn] < matrix[row][column] {outdegrees[newRow][newColumn]--if outdegrees[newRow][newColumn] == 0 {queue = append(queue, []int{newRow, newColumn})}}}}}return ans
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何有效构建企业微信私域流量池并提升用户粘性?
  • LinuxC++(10):调用可执行程序
  • 【实现100个unity特效之16】unity2022之前或者之后版本实现全屏shader graph的不同方式 —— 适用于人物受伤红屏或者一些其他状态效果
  • 2024年8月8日(python基础)
  • 开源应用:AI监测如何成为社会安全的智能盾牌
  • 【Week-G7】Semi-Supervised GAN 实践,使用MNIST数据集
  • Oracle DBA常用 sql
  • AI时代,我们还可以做什么?
  • android系统中data下的xml乱码无法查看问题剖析及解决方法
  • C++ 11 for 循环和容器
  • Linux安全与高级应用(七)深入Linux Shell脚本编程:循环与分支结构的高级应用
  • 【算法】装箱问题
  • Apache Kylin分布式的分析数据仓库
  • pdf怎么加密码怎么设置密码?pdf加密码的几种设置方法
  • Python的安装环境以及应用
  • [译]如何构建服务器端web组件,为何要构建?
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6 学习笔记(一)let,const和解构赋值
  • JavaScript新鲜事·第5期
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • python学习笔记-类对象的信息
  • session共享问题解决方案
  • Vue 动态创建 component
  • 复习Javascript专题(四):js中的深浅拷贝
  • 离散点最小(凸)包围边界查找
  • 爬虫模拟登陆 SegmentFault
  • 前端攻城师
  • 悄悄地说一个bug
  • 什么软件可以提取视频中的音频制作成手机铃声
  • Android开发者必备:推荐一款助力开发的开源APP
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​字​节​一​面​
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #if和#ifdef区别
  • (function(){})()的分步解析
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (定时器/计数器)中断系统(详解与使用)
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计ssm电影分享网站
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (七)glDrawArry绘制
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (四)库存超卖案例实战——优化redis分布式锁
  • (译) 函数式 JS #1:简介
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .DFS.
  • .NET : 在VS2008中计算代码度量值
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现