【java】54. 螺旋矩阵---注意四个边界值即可!!!

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

示例 1:
在这里插入图片描述

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
在这里插入图片描述

输入: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]

提示:

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

代码:
public static List<Integer> spiralOrder(int[][] matrix) {
    
    
		 List<Integer> list=new ArrayList<Integer>();
		 int x1=0,y1=0,x2=matrix.length,y2=matrix[0].length,index=0;
		 while(x1<x2&&y1<y2) {
    
    
			if(index%4==0) {
    
    
				for(int i=x1;i<y2;i++) {
    
    
					list.add(matrix[y1][i]);
				}
				x1++; 
			 }else if(index%4==1){
    
    
				    for(int i=x1;i<x2;i++) {
    
    
						list.add(matrix[i][y2-1]);
					}
					y2--; 
			 }else if (index%4==2) {
    
    
				    for(int i=y2-1;i>=y1;i--) {
    
    
						list.add(matrix[x2-1][i]);
					}
					x2--;
			}else {
    
    
				for(int i=x2-1;i>=x1;i--) {
    
    
					list.add(matrix[i][x1-1]);
				}
				y1++;
			}
			index++;	
		}
		 return list;
	 }

猜你喜欢

转载自blog.csdn.net/qq_44461217/article/details/114839482