矩阵的之字型遍历
来源:互联网 发布:阿里云dns 编辑:程序博客网 时间:2024/06/04 18:49
给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历。
样例
对于如下矩阵:
[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10, 11, 12]]
返回 [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12]
[1,// 2, 5,// 9, 6, 3,// 4, 7, 10, //11, 8,// 12]对角线
public class Solution {
/**
* @param matrix: a matrix of integers
* @return: an array of integers
*/
public int[] printZMatrix(int[][] matrix) {
// write your code here
//空数组或者单行单列时没有之字型遍历
if(matrix == null || matrix.length == 0 || matrix[0].length == 0)
return null;
int rows = matrix.length;//矩阵行数
int cols = matrix[0].length;//矩阵列数
int count = rows*cols;//数组长度
int i=1;
int[] array = new int[count];
int row = 0;
int col = 0;
array[0] = matrix[0][0];
//从矩阵第一个元素出发后,先横右再歇下再竖下在斜上
while ( i < count ) {//保证写满数组
//斜上走到顶[row][col]的斜上为[row-1][col+1]
while(i < count && row - 1 >= 0 && col + 1 <= cols-1) {
array[i++] = matrix[--row][++col];
//++i是先加1再赋值
//i++是先赋值再加1
}
//横右或竖下
if (i < count && col + 1 <= cols-1) {
array[i++] = matrix[row][++col];
} else if (i < count && row + 1 <= rows-1) {
array[i++] = matrix[++row][col];
}
//斜下走到底[row+1][col-1]
while(i < count && row + 1 <=rows-1 && col - 1 >= 0) {
array[i++] = matrix[++row][--col];
}
//竖下或横右
if (i < count && row + 1 <= rows-1) {
array[i++] = matrix[++row][col];
} else if (i < count && col + 1 <=cols-1) {
array[i++] = matrix[row][++col];
}
}
return array;
}
}
- 矩阵的之字型遍历
- 矩阵的之字型遍历
- 矩阵的之字型遍历
- 矩阵的之字型遍历
- 矩阵的之字型遍历
- 题目:矩阵的之字型遍历
- lintcode-矩阵的之字型遍历 -185
- LintCode-矩阵的之字型遍历
- LintCode 185-矩阵的之字型遍历
- 矩阵的之字型遍历-LintCode
- Lintcode矩阵之字型遍历
- LintCode Matrix Zigzag Traversal 矩阵的之字型遍历
- 185.Matrix Zigzag Traversal-矩阵的之字型遍历(容易题)
- 数组与矩阵---之字型打印矩阵
- 之字型打印矩阵(算法)
- 剑指Offer:树的层次遍历,分层打印和按之字型打印
- 1003-- 蛇形矩阵 一字型和回字型
- CSS字型的设定
- 读《构建之法》
- 自己做的网页HTML
- 搜狗手机首页
- HTML KFC ----------- 项目
- android minui fb显示相关函数
- 矩阵的之字型遍历
- Java代码实现文件夹变动监控
- Android Fragment完全解析,关于碎片你所需知道的一切
- 当没有创建表或创建索引权限的时候,删除相同的数据
- 学习html5后的就业方向有哪些
- CVPR2016文章目录
- HTML5页面被运营商进行DNS劫持问题及解决方案,app中h5页面源码的获取
- Android之NFC
- Caffe+Cuda7.5+VS2013+Win10 配置