leedcode54、スパイラル行列

スパイラルマトリックス

タイトル:M所与の配列要素N(m行、n列)を、ヘリカル時計回りの順序に従うが、行列内のすべての要素を返します。*

例1:

入力:[[1、2、3]、[4、5、6]、[7、8、9]
出力:[1,2,3,6,9,8,7,4,5]

例2:

入力:[[1、2、3、4]、[5、6、7、8]、[9,10,11,12]
出力:[1,2,3,4,8,12,11、 10,9,5,6,7]

import java.util.ArrayList;
import java.util.List;
public class SpiralOrder {
    public static void main(String[] args){
        //法① 定义并且初始化二维数组
        int[][] a = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
        
//   法②    定义并且初始化二维数组
//        int[][] a = new int[3][3];
//        int m = 1;
//        for(int i=0 ;i<5;i++){
//            for(int j=0;j<5;j++){
//                a[i][j]=m;
//                m++;
//            }
//        }
        System.out.println(spiralOrder(a));
    }
    
    public static List<Integer> spiralOrder(int[][] matrix){
        if(matrix == null || matrix.length == 0 || matrix[0].length == 0)
            return new ArrayList<>();
        List newMatrix = new ArrayList();
        int l = 0;  //第一列
        int r = matrix[0].length-1;  //列数
        int u = 0;  //第一行
        int d = matrix.length-1;  //行数
        while(l <= r && u <= d) {
            //上方一行
        for(int i= l; i <= r ; i++){
            newMatrix.add(matrix[u][i]);
         }
        u++;
        //右边一列
        for(int i = u;i <= d;i++){
            newMatrix.add(matrix[i][r]);
         }
        r--;
        //下面一行
        for(int i = r;i >= l && u<= d;i--){
            newMatrix.add(matrix[d][i]);
         }
        d--;
        //左边一列
        for(int i = d;i >=u && l<= r;i--){
            newMatrix.add(matrix[i][l]);
         }
        l++;
        }
        return newMatrix;
    }
}

結果:

[1、2、3、6、9、8、7、4、5]

公開された13元の記事 ウォンの賞賛1 ビュー150

おすすめ

転載: blog.csdn.net/weixin_43363236/article/details/103245594