IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    54. Spiral Matrix

    10k发表于 2023-06-02 00:00:00
    love 0

    Question

    Given an m x n matrix, return all elements of the matrix in spiral order.

    Example:

    img

    Input: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
    Output: [1,2,3,4,8,12,11,10,9,5,6,7]
    

    Constraints:

    • m == matrix.length
    • n == matrix[i].length
    • 1 <= m, n <= 10
    • -100 <= matrix[i][j] <= 100

    Algorithm

    No trick question, implement step by step according to intuition.

    Code

    class Solution {
        public List<Integer> spiralOrder(int[][] matrix) {
            List<Integer> res = new ArrayList<>();
            if (matrix == null || matrix.length == 0 || matrix[0] == null || matrix[0].length == 0) {
                return res;
            }
            
            int bottom = matrix.length - 1;
            int right = matrix[0].length - 1;
            int left = 0;
            int top = 0;
            
            int row = left;
            int col = top;
            
            while (left <= right && top <= bottom) {
                while (left <= right && top <= bottom && col <= right) {
                    res.add(matrix[row][col++]);
                }
                col = right;
                top++;
                row = top;
                while (left <= right && top <= bottom && row <= bottom) {
                    res.add(matrix[row++][col]);
                }
                row = bottom;
                right--;
                col = right;
                while (left <= right && top <= bottom && col >= left) {
                    res.add(matrix[row][col--]);
                }
                col = left;
                bottom--;
                row = bottom;
                while (left <= right && top <= bottom && row >= top) {
                    res.add(matrix[row--][col]);
                }
                row = top;
                left++;
                col = left;
            }
            return res;
        }
    }
    


沪ICP备19023445号-2号
友情链接