题解 | 螺旋矩阵

螺旋矩阵

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param matrix int整型二维数组
     * @return int整型ArrayList
     */
    public ArrayList<Integer> spiralOrder (int[][] matrix) {
        if(matrix == null || matrix.length == 0 || matrix[0].length == 0){
            return new ArrayList<>();
        }
        int n = matrix.length;
        int m = matrix[0].length;
        ArrayList<Integer> list = new ArrayList<>();
        int count = 0;
        int x = 0;
        int y = 0;
        int left = 0;
        int right = m - 1;
        int top = 0;
        int bottom = n - 1;
        //方向
        int forword = 0;

        while (count < n * m) {
            count++;
            //往右走
            if (forword % 4 == 0) {
                if (y <= right) {
                    list.add(matrix[x][y]);
                    if (y == right) {
                        forword++;
                        top++;
                        x++;
                    } else {
                        y++;
                    }

                }
            } else if (forword % 4 == 1) {
                if (x <= bottom) {
                    list.add(matrix[x][y]);
                    if (x == bottom) {
                        right--;
                        forword++;
                        y--;
                    } else {
                        x++;
                    }
                }
            } else if (forword % 4 == 2) {
                if (y >= left) {
                    list.add(matrix[x][y]);
                    if (y == left) {
                        bottom--;
                        forword++;
                        x--;
                    } else {
                        y--;
                    }
                }
            } else if (forword % 4 == 3) {
                if (x >= top) {
                    list.add(matrix[x][y]);
                    if (x == top) {
                        left++;
                        forword++;
                        y++;
                    } else {
                        x--;
                    }
                }
            }
        }
        return list;
    }
}

全部评论

相关推荐

钱嘛数字而已:拖拉机被发明出来之后,就不需要农民了吗?农民还是需要的,但不需要这么多了,另外对农民的要求也变高了,需要会开拖拉机。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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