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

Leetcode498. 对角线遍历

Every day a Leetcode

题目来源:498. 对角线遍历

解法1:模拟

根据题目要求,矩阵按照对角线进行遍历。设矩阵的行数为 m,矩阵的列数为 n,我们仔细观察对角线遍历的规律可以得到如下信息:

  1. 一共有 m+n−1 条对角线,相邻的对角线的遍历方向不同。
  2. 设对角线从上到下的编号为 i(0<=i<m+n-1),当 i 为偶数时,则第 i 条对角线的走向是从下往上遍历;当 i 为奇数时,则第 i 条对角线的走向是从上往下遍历。

根据以上观察得出的结论,我们直接模拟遍历所有的对角线即可。

代码:

/** @lc app=leetcode.cn id=498 lang=cpp** [498] 对角线遍历*/// @lc code=start
class Solution
{
public:vector<int> findDiagonalOrder(vector<vector<int>> &mat){int m = mat.size(), n = m ? mat[0].size() : 0;// 一共有 m + n - 1 条对角线int lines = m + n - 1;vector<int> ans;for (int i = 0; i < lines; i++){if (i % 2 == 0){ // ↗int x = i < m ? i : m - 1;int y = i < m ? 0 : i - m + 1;while (x >= 0 && y < n){ans.push_back(mat[x][y]);x--, y++;}}else{ // ↙int x = i < n ? 0 : i - n + 1;int y = i < n ? i : n - 1;while (x < m && y >= 0){ans.push_back(mat[x][y]);x++, y--;}}}return ans;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(m*n),其中 m 是矩阵 mat 的行数 ,n 是矩阵 mat 的列数。

空间复杂度:O(1)。

http://www.lryc.cn/news/371778.html

相关文章:

  • flume配置----a1.sources.r1.positionFile=xxxx.json
  • Controller 自动化日志输出
  • css3中有哪些新属性(特性)?
  • SAP ABAP 之面向对象OO
  • 在VSCode中使用Vim
  • 鸿蒙低代码开发的局限性
  • Codeforces Round 952 (Div. 4) c++题解(A-H1)
  • 人工智能将成为数学家的“副驾驶”
  • 自适应巡航控制技术规范(简化版)
  • 【AI】文心一言的使用分享
  • Java学习-MyBatis学习(四)
  • 多源最短路径算法 -- 弗洛伊德(Floyd)算法
  • 同三维T80005EH4 H.265 4路高清HDMI编码器
  • 焦化行业排放平台简介
  • 『原型资源』Axure自带图标库不够用,第三方经典图标库来袭
  • 修改版的VectorDBBench更好用
  • 六西格玛培训都培训哪些内容 ?
  • K8S环境部署Prometheus
  • 在linux系统上挂载新硬盘
  • 1004.最大连续1的个数
  • 【机器学习300问】116、什么是序列模型?序列模型能干什么?
  • kafka 快速上手
  • Python记忆组合透明度语言模型
  • 如何保证数据库和缓存的一致性
  • Java基础 - 多线程
  • 云顶之弈-测试报告
  • TCP/IP协议分析实验:通过一次下载任务抓包分析
  • Python项目开发实战:企业QQ小程序(案例教程)
  • list模拟与实现(附源码)
  • Java应用中文件上传安全性分析与安全实践