【leetcode/数组字符串】对角线遍历(其他遍历方式)

本文介绍了一个LeetCode题目,涉及矩阵的对角线遍历。讲解了从左下到右上和从右上到左下的遍历方法,并提供了如何根据行和列索引的奇偶性判断遍历方向的思路。文章还分享了实现这种遍历的AC代码及解题经验。
摘要由CSDN通过智能技术生成

问题描述:

给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。

 

示例:

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

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

解释:

基本思路:

本题是一个很好的例子,因为它引入了一种完全不同的遍历方式。我们将会看到如何编写这种非常规的遍历。

首先要明确一个思路,由于索引都是非负整数,而且本题中这种遍历的方式非常有规律,我们完全可以抛弃模拟的思想,转而去寻找遍历的元素索引的规律

我们发现其实所谓对角线遍历可以分为两种——一种是从左下到右上的,另一种是从右上到左下的。

实现这两种遍历特别简单,xy两个索引,一个+1,一个-1即可。那么何时选择哪一种遍历呢?

假设我们的matrix无限大,那么我们的遍历次序就有:

0:              (00)
1:            (01)(10)
2:          (20)(11)(02)
3:        (03)(12)(21)(30)
4:      (40)(31)(22)(13)(04)
5:    (05)(14)(23)(32)(41)(50)
6:  (60)(51)................(06)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值