彪码野郎

  • 首页

  • 分类

  • 归档

打矩阵输出为矩阵输出为之字型

发表于 2019-09-04 阅读次数:

题目

按照之字型的顺序输出一个矩阵,如下图所示

思路

由题目可以看出,之字型输出矩阵,就是从上到下或者从下到上的输出一条斜线,那么我们只需要写一个方法输出斜线,然后再根据边界进行循环即可。

设置a,b两个点表示一条线

具体实现如下。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public static void printMatrixZigZag(int[][] matrix) {

int xa = 0;
int xb = 0;
int ya = 0;
int yb = 0;
int endX = matrix.length - 1;
int endY = matrix[0].length - 1;
boolean fromUp = false;
while(xa != matrix.length - 1) {
printLine(matrix, xa, xb, ya, yb, fromUp);
xa = ya == endY ? xa + 1 : xa; //到最右的话要向下
ya = ya == endY ? ya : ya + 1; //没到最右就继续向右
yb = xb == endX ? yb + 1 : yb; //到最下就向右
xb = xb == endX ? xb : xb + 1; //没到最下就继续往下
fromUp = !fromUp;
}
}



//打印斜线,flag表示从上或者从下开始打印
public static void printLine(int[][] m , int xa, int xb, int ya, int yb, boolean flag) {

//从上到下
if(flag) {
while(xa != xb + 1) { //a是上位,b是下位,ab是可以重合的,所以a如果等于b+1,就是越界了
System.out.println(m[xa++][ya--]);
}
}else { //从下到上
while (xb != xa - 1) {
System.out.println(m[xb--][yb++]);
}
}
}

public static void main(String[] args) {
int[][] matrix = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
printMatrixZigZag(matrix);

}
sql篇其一
在行列都排好序的矩阵中找数
  • 文章目录
  • 站点概览
Weapon

Weapon

40 日志
6 分类
4 标签
  1. 1. 题目
  2. 2. 思路
  3. 3. 实现
© 2019 Weapon
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0