题解 | #螺旋矩阵#

螺旋矩阵

https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param matrix int整型二维数组
     * @return int整型ArrayList
     */
    public ArrayList<Integer> spiralOrder (int[][] matrix) {
        // write code here

        ArrayList<Integer> list = new ArrayList<Integer>();
        if(matrix.length == 0)
            return list;
        int matrixRow = matrix.length;//一共多少行
        int matrixColumn = matrix[0].length;//一共多少列
        int usedRow = 0;//上面的行
        int usedColumn = 0;//后面的列
        int usedRow1 = 0;//下面的行
        int usedColumn1 = 0;//前面的列
        int row = 0;
        int column = matrix.length - 1;
        int count = 0;
        int size = matrixRow * matrixColumn;
        while (count <  size ) {

            if(count < size)
            //第一行数据遍历
            for (int i = usedColumn1; i < matrixColumn - usedColumn ; i++) {
                list.add(matrix[usedRow][i]);
                count++;
            }
            usedRow++;
            //最后一列数据遍历
            if(count < size)
            for (int j = usedRow; j < matrixRow - usedRow1; j++) {
                list.add(matrix[j][matrixColumn-usedColumn-1]);
                count++;
            }
            usedColumn++;
            //最后一行
            if(count < size){
                for(int i = matrixColumn - 1 - usedColumn; i >= usedColumn1; i--){
                    list.add(matrix[matrixRow-1-usedRow1][i]);
                    count++;
                }
            }
            usedRow1++;
            //第一列
            if(count<size){
                for(int j = matrixRow - usedRow1 - 1; j >= usedRow; j--){
                    list.add(matrix[j][usedColumn1]);
                    count++;
                }
            }
            usedColumn1++;
        }
        return list;

    }
}

全部评论

相关推荐

牛客26538663...:不限量吗,那把token拿出去卖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务