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

[数组基础] 0498. 对角线遍历

文章目录

      • 1. 题目链接
      • 2. 题目大意
      • 3. 示例
      • 4. 解题思路
      • 5. 参考代码

1. 题目链接

498. 对角线遍历 - 力扣(LeetCode)



2. 题目大意

描述:给定一个大小为 m×n 的矩阵 mat 。

要求:以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。

说明:

  • m==mat.length。
  • n==mat[i].length。
  • 1≤m,n≤104。
  • 1≤m×n≤104。
  • −105≤mat[i][j]≤105。

3. 示例

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

4. 解题思路

找规律:

  1. 「行号 + 列号」为偶数时,方向为从左下到右上。记右上方向 (−1,+1),即行号减 1,列号加 1。
  2. 「行号 + 列号」为奇数时,方向为从右上到左下。记左下方向 (+1,−1),即行号加 1,列号减 1。

边界情况:

  1. 向右上方向移动时:
    1. 如果在最后一列,则向下方移动,即 **x += 1**
    2. 如果在第一行,则向右方移动,即 **y += 1**
    3. 其余情况想右上方向移动,即 **x -= 1****y += 1**
  2. 向左下方向移动时:
    1. 如果在最后一行,则向右方移动,即 **y += 1**
    2. 如果在第一列,则向下方移动,即 **x += 1**
    3. 其余情况向左下方向移动,即 **x += 1****y -= 1**

5. 参考代码

class Solution {public int[] findDiagonalOrder(int[][] mat) {int rows = mat.length;int cols = mat[0].length;int count = rows * cols;int x = 0, y = 0;int[] ans = new int[rows*cols];for (int i = 0; i < count; i++) {ans[i] = mat[x][y];if ((x + y) % 2 == 0) {// 最后一列if (y == cols - 1) {x++;// 第一行} else if (x == 0) {y++;// 右上方向} else {x--;y++;}} else {// 最后一行if (x == rows - 1) {y++;// 第一列} else if (y == 0) {x++;// 左下方向} else {x++;y--;}}}return ans;}}

http://www.mrgr.cn/news/63861.html

相关文章:

  • SVN Update出错问题解决三大步
  • vue3学习记录-nextTick
  • net 获取本地ip地址,net mvc + net core 两种
  • 深度信念网络(DBN):深度学习早期的重要网络模型
  • Ubuntu中VSCode以sudo开始GDB调试C程序方法
  • flask websocket服务搭建,flask-sock 和 flask-socketio
  • 穿越死锁的迷雾:pthread_mutex_lock的终极挑战与破解策略
  • vue+django+neo4j航班智能问答知识图谱可视化系统
  • BME680模块简介
  • Python | Leetcode Python题解之第526题优美的排列
  • 1010:计算分数的浮点数值
  • 【ShuQiHere】 如何理解渐进符号及其应用:大 O、大 Ω 和大 Θ
  • 如何获取当前数据库版本?
  • 力扣每日一题 3226. 使两个整数相等的位更改次数
  • yocto如何获取现成recipes
  • windows C#-命名空间和类
  • 《Baichuan-Omni》论文精读:第1个7B全模态模型 | 能够同时处理文本、图像、视频和音频输入
  • NuGet Next发布,全新版私有化NuGet管理
  • 【每日一题】LeetCode - 罗马数字转整数
  • 微服务之间的调用关系
  • 红帽认证系列之二:红帽认证专家(RHCX)详解
  • 深入理解 MySQL 中的日志类型及其应用场景
  • SQLI LABS | Less-24 POST-Second Oder Injections Real Treat-Stored Injections
  • Python中什么是迭代器,如何创建迭代器?
  • DICOM标准:解析DICOM属性中的病人模块
  • 大数据治理