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

leetcode 498. 对角线遍历 中等

给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。

示例 1:

输入:mat = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,4,7,5,3,6,8,9]

示例 2:

输入:mat = [[1,2],[3,4]]
输出:[1,2,3,4]

提示:

  • m == mat.length
  • n == mat[i].length
  • 1 <= m, n <= 10^4
  • 1 <= m * n <= 10^4
  • -10^5 <= mat[i][j] <= 10^5

分析:直接模拟。由于矩阵的大小不会很大,可以额外用一个数组标记位置是否已经遍历过。

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* findDiagonalOrder(int** mat, int matSize, int* matColSize, int* returnSize) {int n=matSize,m=matColSize[0],f=0,t=0;*returnSize=m*n;int flag[n+5][m+5];for(int i=0;i<n;++i)for(int j=0;j<m;++j)flag[i][j]=0;int *ans=(int*)malloc(sizeof(int)*(m*n));for(int i=0,j=0;t<m*n;){if(!f){while(i>=0&&j<m&&flag[i][j]==0){ans[t++]=mat[i][j],flag[i][j]=1;i--,j++;}f=1;i++;j=fmin(m-1,j);}else{while(i<n&&j>=0&&flag[i][j]==0){ans[t++]=mat[i][j],flag[i][j]=1;i++,j--;}f=0;j++;i=fmin(n-1,i);}}return ans;
}

http://www.dtcms.com/a/349545.html

相关文章:

  • Linux下的软件编程——网络编程(http)
  • C++14 到 C++20 全面解析:语言新特性、标准库演进与实战案例
  • 【二叉树 - LeetCode】617. 合并二叉树
  • [QMT量化交易小白入门]-八十三、8月因为通信行业,QMT平台ETF轮动策略年化达到了168.56%
  • 降本增效:基于 JavaScript 的 AI 编程 IDE 上下文压缩优化方案
  • CloudBase云开发MCP + CodeBuddy IDE:打造智能化全栈理财助手的完整实践
  • 本地生活新风口:“我店模式”入局正当时??
  • Web程序设计
  • 【前端安全】前端安全第一课:防止 XSS 和 CSRF 攻击的常见手法
  • 新型HTTP走私攻击技术使攻击者可注入恶意请求
  • 从0死磕全栈第1天:从写一个React的hello world开始
  • k8s笔记04-常用部署命令
  • 血缘元数据采集开放标准:OpenLineage Integrations Apache Spark Quickstart with Jupyter
  • SDC命令详解:使用set_timing_derate命令进行约束
  • 基于C语言实现的KV存储引擎(二)
  • ‌重塑培训架构,助力企业人才战略升级‌
  • 【C语言16天强化训练】从基础入门到进阶:Day 10
  • CPLD与FPGA
  • 《Password Guessing Using Large Language Models》——论文阅读
  • 企业级Java项目整合ELK日志收集分析可视化
  • [论文阅读]RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation
  • 大模型知识--MCP
  • 无人机芯片休眠模式解析
  • Linux系统的网络管理(一)
  • 血缘元数据采集开放标准:OpenLineage Integrations Apache Spark Main Concepts Installation
  • 05 开发环境和远程仓库Gitlab准备
  • 【spring进阶】spring应用内方法调用时长统计
  • 【数据结构】串——(一)
  • 36 NoSQL 注入
  • Docker 部署 GitLab 并开启 SSH 使用详解