leedcode54、螺旋矩阵

螺旋矩阵

题目:给定一个包含mn 个元素的矩阵(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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值