zigzag遍历矩阵

本文介绍了如何按之字型遍历二维矩阵,通过分析矩阵的遍历顺序,提出以斜向一行作为子过程,并根据行数改变遍历方向的方法,通过两个端点O1和O2的移动实现之字形遍历,直至两端点相遇,完成遍历。
摘要由CSDN通过智能技术生成

zigzag遍历矩阵

描述

按之字型遍历一个矩阵。

分析

之字形遍历顺序如下图所示:
在这里插入图片描述
处理一个二维矩阵一定不能陷入繁琐的细节处理中,如果此题思考方向为到了 2 后如何转向 5,到了 5 后如何转向 9,到了 9 后又如何转向 6,这样编程会变得异常复杂。应该抽象出子过程,本题的子过程就是遍历矩阵斜着的一行,只不过每隔一行遍历方向改变。如下图所示:
在这里插入图片描述
O1 和 O2 代表斜着一行的两个端点。根据遍历方向,从一个端点移动到另一个端点即可。每遍历完一行,O1 向右移动一格,O2 向左移动一格。当移动到边界时,O1 转为向下移动,O2 转为向右移动。两端点相遇,遍历结束。

代码

class Code_08_ZigZagPrintMatrix {
   
	public static void printMatrixZigZag(int[][] matrix) {
   
        // 定义 O1
		int x1= 0;
        int y1 = 0;
        // 定义 O2
		int x2 = 0;
        int y2 = 0;
        // x 最大值 
        int endR = matrix.length - 1;
        // y 最大值
		int endC = matrix[0].length - 1;
		boolean fromUp = false;
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值