zoukankan      html  css  js  c++  java
  • lintcode:Matrix Zigzag Traversal 矩阵的之字型遍历

    题目:

    给你一个包含 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]

    解题:

    感觉很简单,就是没有搞出来,程序来源 ,这里是先右上走,我换成先横着走就是不对了,表示不理解。另外一种方法,表示也不理解。

    java程序:

    public class Solution {
        /**
         * @param matrix: a matrix of integers
         * @return: an array of integers
         */ 
        public int[] printZMatrix(int[][] matrix) {
            if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return null;
            int count = matrix.length * matrix[0].length;
            int[] array = new int[count];
            int r = 0, c = 0;
            array[0] = matrix[0][0];
            for (int i = 1; i < count; ) {
                //斜上走到顶
                while(i < count && r - 1 >= 0 && c + 1 < matrix[0].length) {
                    array[i++] = matrix[--r][++c];
                }
                //横右走一步,不可横右走时竖下走一步
                if (i < count && c + 1 < matrix[0].length) {
                    array[i++] = matrix[r][++c];
                } else if (i < count && r + 1 < matrix.length) {
                    array[i++] = matrix[++r][c];
                }
                //斜下走到底
                while(i < count && r + 1 < matrix.length && c - 1 >= 0) {
                    array[i++] = matrix[++r][--c];
                }
                //竖下走一步,不可竖下走时横右走一步
                if (i < count && r + 1 < matrix.length) {
                    array[i++] = matrix[++r][c];
                } else if (i < count && c + 1 < matrix[0].length) {
                    array[i++] = matrix[r][++c];
                }
            }
            return array;
        }
    
    }
    View Code

    总耗时: 2001 ms

    Python程序:

  • 相关阅读:
    为没有源码的DLL文件添加强名称
    部署.Net Core APi+Vue 到 linux centos 服务器(一)
    安装nginx
    Linux常用命令大全
    Linq 根据list属性去重复
    jQuery Validate验证框架详解
    mysql+C#
    微信支付配置参数
    自定义截取数,截取字符串,返回字符串数组。
    Git GUI基本操作
  • 原文地址:https://www.cnblogs.com/bbbblog/p/4888978.html
Copyright © 2011-2022 走看看