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

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

题目:

题解:

const int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
int rows, columns;typedef struct point {int x, y;
} point;int longestIncreasingPath(int** matrix, int matrixSize, int* matrixColSize) {if (matrixSize == 0 || matrixColSize[0] == 0) {return 0;}rows = matrixSize;columns = matrixColSize[0];int** outdegrees = (int**)malloc(sizeof(int*) * rows);for (int i = 0; i < rows; i++) {outdegrees[i] = (int*)malloc(sizeof(int) * columns);memset(outdegrees[i], 0, sizeof(int) * columns);}for (int i = 0; i < rows; ++i) {for (int j = 0; j < columns; ++j) {for (int k = 0; k < 4; ++k) {int newRow = i + dirs[k][0], newColumn = j + dirs[k][1];if (newRow >= 0 && newRow < rows && newColumn >= 0 && newColumn < columns && matrix[newRow][newColumn] > matrix[i][j]) {++outdegrees[i][j];}}}}point* q = (point*)malloc(sizeof(point) * rows * columns);int l = 0, r = 0;for (int i = 0; i < rows; ++i) {for (int j = 0; j < columns; ++j) {if (outdegrees[i][j] == 0) {q[r++] = (point){i, j};}}}int ans = 0;while (l < r) {++ans;int size = r - l;for (int i = 0; i < size; ++i) {point cell = q[l++];int row = cell.x, column = cell.y;for (int k = 0; k < 4; ++k) {int newRow = row + dirs[k][0], newColumn = column + dirs[k][1];if (newRow >= 0 && newRow < rows && newColumn >= 0 && newColumn < columns && matrix[newRow][newColumn] < matrix[row][column]) {--outdegrees[newRow][newColumn];if (outdegrees[newRow][newColumn] == 0) {q[r++] = (point){newRow, newColumn};}}}}}return ans;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LeetCode Pow(x, n)
  • HTTP的场景实践
  • 学习嵌入式的第十六天----结构体 共用体
  • C# winform 三层架构增删改查,(删除篇)
  • Python面试宝典第32题:课程表
  • cmake+ninja交叉编译android下的静态库
  • Elasticsearch 基本搜索
  • AI大模型开发——2.深度学习基础(1)
  • HCIP第七章(BGP拓展知识)
  • HCIP第六章(BGP)
  • 【Linux学习】动静态库从原理到制作
  • 【Java数据结构】---List(ArrayList)
  • STM32的USB接口介绍
  • vue前端自适应布局,一步到位所有自适应
  • 【vulnhub】WebDeveloper:1靶机
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • linux学习笔记
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • SQLServer之创建数据库快照
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 创建一个Struts2项目maven 方式
  • 警报:线上事故之CountDownLatch的威力
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 设计模式 开闭原则
  • 使用Gradle第一次构建Java程序
  • 微信小程序开发问题汇总
  • 正则学习笔记
  • 主流的CSS水平和垂直居中技术大全
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • const的用法,特别是用在函数前面与后面的区别
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 积累各种好的链接
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​520就是要宠粉,你的心头书我买单
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​数据链路层——流量控制可靠传输机制 ​
  • #includecmath
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (1)Android开发优化---------UI优化
  • (3)(3.5) 遥测无线电区域条例
  • (SpringBoot)第二章:Spring创建和使用
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (算法)Game
  • (算法)求1到1亿间的质数或素数
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (杂交版)植物大战僵尸
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .bat文件调用java类的main方法
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net core Swagger 过滤部分Api