LintCode-矩阵的之字型遍历
2015-11-08 21:36
281 查看
容易 矩阵的之字型遍历
给你一个包含 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]
public class Solution { /** * @param matrix: a matrix of integers * @return: an array of integers */ public int[] printZMatrix(int[][] matrix) { if(matrix == null){ return null; } int m = matrix[0].length; int n = matrix.length; int i = 0; int count = n*m; int [] re = new int [count]; int a=0,b=0; re[i++] = matrix[a][b]; if(n == 1){ return matrix[0]; } if(m == 1){ int [] ree = new int ; for(int k =0; k<n;k++){ ree[k] = matrix[k][0]; } } while(i <count){ //斜向上遍历 while(a > 0 && b+1 < m){ re[i++] = matrix[--a][++b]; } //斜向上结束,试着往右或者下移动 if(b+1 < m){ re[i++] = matrix[a][++b]; }else{ if(a+1 <n){ re[i++] = matrix[++a][b]; } } //斜向下遍历 while(a+1 < n && b > 0){ re[i++] = matrix[++a][--b]; } //斜向下遍历结束,试着往下或者往右移动 if(a+1 < n){ re[i++] = matrix[++a][b]; }else{ if(b + 1 <m){ re[i++] = matrix[a][++b]; } } } return re; } }
相关文章推荐
- LintCode-最大数
- Subtree
- LintCode --number-of-airplanes-in-the-sky(数飞机)
- LintCode --invert-binary-tree(翻转二叉树)
- LintCode --find-the-missing-number(寻找缺失的数)
- LintCode--best-time-to-buy-and-sell-stock(买卖股票的最佳时机)
- LintCode--best-time-to-buy-and-sell-stock-ii(买卖股票的最佳时机 II)
- 中位数 21% 通过 给定一个未排序的整数数组,找到其中位数。 中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数
- LintCode 翻转二叉树
- LintCode 寻找缺失的数
- Lintcode 二叉树的后序遍历
- Lintcode 二叉树中序遍历
- Lintcode 二叉树前序遍历
- Lintcode 尾部零的个数
- Lintcode 比较字符串
- Lintcode 主元素
- Lintcode解题笔记 - 岛屿的个数
- LintCode -合并两个排序链表
- 20150708 lintcode 总结 Binary Tree Maximum Path Sum Show result *****
- 20150708 lintcode 总结 Minimum Path Sum