LT498. 对角线遍历

news2024/11/24 4:19:11

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 <= 104
  • 1 <= m * n <= 104
  • -105 <= mat[i][j] <= 105

解题思路与代码实现

class Solution {

        /**
         * 解题思路:
         * 每条对角线的元素的行列下标之和是相等的:
         * 其为奇数时,向左下遍历;
         * 其为偶数时,向右上遍历
         * 需要注意在碰到行列边界时,需要相应右移或者下移
         */
        public int[] findDiagonalOrder(int[][] mat) {
            int m = mat.length, n = mat[0].length;
            int[] res = new int[m * n];
            int row = 0, col = 0;
            // 一共要访问m*n个元素
            for (int i = 0; i < res.length; i++) {
                res[i] = mat[row][col];
                // 偶数向右上方继续寻找,碰到边界需要调整
                if ((row + col) % 2 == 0) {
                    if (col == n - 1) {  // 下移
                        row++;
                    } else if (row == 0) { // 右移
                        col++;
                    } else {    // 右上
                        row--;
                        col++;
                    }
                } else {
                    if (row == m - 1) { // 右移
                        col++;
                    } else if (col == 0) {  // 下移
                        row++;
                    } else {    // 左下
                        row++;
                        col--;
                    }
                }
            }
            return res;
        }

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1178553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习实战:基于sklearn的工业蒸汽量预测

文章目录 写在前面工业蒸汽量预测1.基础代码2.模型训练3.模型正则化4.模型交叉验证5.模型超参空间及调参6.学习曲线和验证曲线 写在后面 写在前面 本期内容&#xff1a;基于机器学习的工业蒸汽量预测 实验环境&#xff1a; anaconda python sklearn 注&#xff1a;本专栏内所有…

uniapp小程序才到第五层就报错navigateto:fail webview count limit exceed

错误截图 原因 小程序官方描述是说可以跳转10层&#xff0c;但是使用uniapp开发的程序在小程序中才运行到第五层就报错了&#xff0c;原因是因为没有设置appId。如果设置了就正常了。

基于APM(PIX)飞控和missionplanner制作遥控无人车-从零搭建自主pix无人车无人坦克

前面的步骤和无人机调试一样&#xff0c;可以参考无人机相关专栏。这里不再赘述。 1.安装完rover的固件后&#xff0c;链接gps并进行校准。旋转小车不同方向&#xff0c;完成校准&#xff0c;弹出成功窗口。 2.校准遥控器。 一定要确保遥控器模式准确&#xff0c;尤其是使用没…

按键精灵中的UI界面操作

1. 按键精灵中UI界面常用的控件 1. 文字框 界面1: {标签页1:{文字框:{名称:"文字框1",显示内容:"显示内容",文字大小:0,高度:0,宽度:0,注释:"文字大小、高度、宽度是可选属性&#xff0c;如需使用默认值&#xff0c;可保持值为0或直接删除此属性&qu…

easyHttp -- 轻量级的 HTTP 客户端工具包

easyHttp gitte地址:easy-http 介绍 easyHttp 是一个轻量级的 HTTP 客户端工具包&#xff0c;专为 Java 设计&#xff0c;使得基本的 HTTP 请求变得异常简单。该库主要针对常见的 HTTP 请求提供了简洁的 API&#xff0c;使得开发者无需面对复杂的设置。当前版本已支持基本的请…

游戏服务器频繁遭到攻击是什么原因?

这可能是来自竞争对手的恶意攻击&#xff0c;使您的服务器无法正常运行。如果游戏被卡住或攻击&#xff0c;所有服务器都将瘫痪。玩家的游戏体验不好&#xff0c;自然会选择别家的游戏。当然&#xff0c;也不排除游戏中的一些玩家对游戏中或游戏公司中的一些人不满&#xff0c;…

自动驾驶算法(七):基于遗传算法的路径规划(下)

目录 1 遗传选择 2 遗传交叉 3 遗传变异 4 结语 1 遗传选择 我们书接上回&#xff0c;我们完成了种群的初始化&#xff0c;将所有的种群放入了new_pop1中&#xff0c;这个new_pop1是一个&#xff08;种群大小 * 路径&#xff09;的一个矩阵&#xff0c;我们来看如何进行遗传…

软件外包开发需要注意的问题

软件外包开发是一种常见的商业实践&#xff0c;可以帮助企业降低成本、提高效率和获得专业技能。然而&#xff0c;要确保成功的外包开发项目&#xff0c;需要注意以下一些关键问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司…

数组的存储结构、特殊矩阵和稀疏矩阵的压缩存储

数组的存储结构、特殊矩阵和稀疏矩阵的压缩存储 1.数组的存储结构、特殊矩阵、稀疏矩阵的压缩存储1.1 数组的存储结构1.1.1 一维数组的存储结构关系式1.1.2 多维数组的存储结构关系式 1.2 特殊矩阵的压缩存储1.2.1 对称矩阵1.2.2 下三角矩阵1.2.3 上三角矩阵1.2.4 三对角矩阵 1…

Cesium:WFS请求两种方式

以本地发布的上海市浦东区行政区划WMS地图服务为例,讲述Cesium中WFS请求的两种方式及其优缺点。 服务加载地址及其参数如下, 服务加载地址:http://localhost:8089/geoserver/pudong/wms 加载参数:layerName:pudong:distractservice: "WMS",request: "GetMa…

基于材料生成算法的无人机航迹规划-附代码

基于材料生成算法的无人机航迹规划 文章目录 基于材料生成算法的无人机航迹规划1.材料生成搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用材料生成算法来优化无人机航迹规划。 …

以华为为例:GTM岗位主要是做什么的?如何做好GTM工作?

如何让产品上市以后卖得更好&#xff1f;这是一个系统工程。 许多公司在学习华为&#xff08;尤其是做消费者业务&#xff0c;通俗地说就是2C业务的公司或产品&#xff09;&#xff0c;设立GTM相关的岗位。我们来看一下&#xff0c;GTM岗位主要做些什么&#xff0c;如何才能胜…

宠物领养系统jsp+servlet+mysql

设计不同用户的操作权限、注册和登录方法。 管理员可以在管理员管理、用户管理、宠物管理、评论管理、团队活动管理、志愿者的申请等等模块中进行查询、添加、删除、修改。 管理员可以在领养管理中通过领养时间查询所有宠物被领养的信息&#xff0c;修改是否同意领养宠物&#…

色彩大师:纽约公寓的大胆装修之旅

这对夫妇刚从西海岸搬到了纽约&#xff0c;最初尝试自己布置家居。但在设计中心寻找面料和家具时&#xff0c;他们感到有些不知所措。 在海外期间&#xff0c;他们深受英国乡村别墅装饰的魅力所吸引&#xff0c;希望将类似的风格带到他们的纽约公寓。我们喜欢英国乡村别墅的随…

nn.embedding函数详解(pytorch)

提示&#xff1a;文章附有源码&#xff01;&#xff01;&#xff01; 文章目录 前言一、nn.embedding函数解释二、nn.embedding函数使用方法四、模型训练与预测的权重变化探讨 前言 最近发现prompt工程(如sam模型)&#xff0c;也有transform的detr模型等都使用了nn.Embedding函…

时序预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.Matlab实现SVM-Adaboost时间序列预测&#xff08;风…

解决ERR: cURL error 77: Unable to initialize NSS: -8023

研发反映一个问题,上传文件时失败,日志内错误信息如下: ERR: cURL error 77: Unable to initialize NSS: -8023 (SEC_ERROR_PKCS11_DEVICE_ERROR) ... 这个功能使用了腾讯云的点播服务。因此立即联系了腾讯云客服。 搞了很久问题依旧。 反复测试,发现上传视频文件,错…

03【保姆级】-GO语言变量和数据类型和相互转换

03【保姆级】-GO语言变量和数据类型 一、变量1.1 变量的定义&#xff1a;1.2 变量的声明、初始化、赋值1.3 变量使用的注意事项 插播-关于fmt.Printf格式打印%的作用二、 变量的数据类型2.1整数的基本类型2.1.1 有符号类型 int8/16/32/642.1.2 无符号类型 int8/16/32/642.1.3 整…

涉及法律诉讼和负债670万美元的【工务园】申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于东莞的人力资源SaaS平台Baiya International Group Inc&#xff08;简称&#xff1a;工务园&#xff09;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申…

【pytorch源码分析--torch执行流程与编译原理】

背景 解读torch源码方便算子开发方便后续做torch 模型性能开发 基本介绍 代码库 https://github.com/pytorch/pytorch 模块介绍 aten: A Tensor Library的缩写。与Tensor相关的内容都放在这个目录下。如Tensor的定义、存储、Tensor间的操作&#xff08;即算子/OP&#xff…