54. Spiral Matrix(螺旋数组) 数组/medium


1.Description

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。


2.Example

在这里插入图片描述

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

3.Solution

一层一层地向内遍历,通过四个for循环分别遍历上、右、下、左。

class Solution {
    
    
    public List<Integer> spiralOrder(int[][] matrix) {
    
    
        List<Integer> list = new ArrayList<Integer>();
        int m = matrix.length;
        int n = matrix[0].length;
        int up = 0,down = m-1,left = 0,right = n-1;

        while(left<=right&&up<=down) {
    
    
        	for(int j = left;j<=right;j++) {
    
    
        		list.add(matrix[up][j]);
        	}
        	for(int i = up+1;i<=down;i++) {
    
    
        		list.add(matrix[i][right]);
        	}
        	if(left<right&&up<down) {
    
    
        		for(int j = right-1;j>left;j--) {
    
    
            		list.add(matrix[down][j]);
            	}
            	for(int i = down;i>up;i--) {
    
    
            		list.add(matrix[i][left]);
            	}
        	}
        	left++;
        	right--;
        	up++;
        	down--;
        }
        return list;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45736160/article/details/114856448