185

来源:互联网 发布:我想在淘宝上卖东西该怎么办 编辑:程序博客网 时间:2024/06/03 18:59

4.13

这道题简直要写懵逼了啊。

要搞清楚运动方向。

public class Solution {    /**     * @param matrix: a matrix of integers     * @return: an array of integers     */ public static int[] printZMatrix(int[][] matrix) {        if(matrix == null){        return null;// write your code here        }        int n = matrix.length;        if(n == 1){        return matrix[0];        }        int m = matrix[0].length;        int num = m*n;        boolean[][] flag = new boolean[n][m];        int[] res = new int[ num ];         if( m == 1){        for(int k = 0;k < n; k++){        res[k] = matrix[k][0];        }        return res;        }        res[0] = matrix[0][0];        res[1] = matrix[0][1];        int i = 0;         int j = 1;        int count = 1;        while(count < num){        //向斜下方运动        while( i < n-1 && j > 0 && count < num-1){        res[++count] = matrix[++i][--j];        if(i == n-1 && j== m-1){        res[ ++count] = matrix[i][j];        return res;        }                }        //向右运动        if(i == n-1 && j < m-1){    res[ ++count] = matrix[i][++j];    }        // 向下运动        if( j == 0 && i < n-1){    res[++count] = matrix[++i][j];    }                    //向斜上方运动        while(i > 0 && j < m-1 && count < num-1){        res[++count] = matrix[--i][++j];                        }        //向下移动        if(j == m-1 && i < n-1){    res[++count] = matrix[++i][j];    }        if(j == m-1 && i == n-1){    res[count++] = matrix[i][j];    return res;    }        //向右移动        if(i == 0 && j < m-1){    res[++count] = matrix[i][++j];    }                                }        return res;    }}


0 0