螺旋矩阵(java)

题目描述

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

代码思路:

java 复制代码
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
      List<Integer> list = new ArrayList<>(); 
      int rowlen=matrix.length;
      int columnLen =matrix[0].length;
      //考虑特殊情况
      if(matrix==null||matrix.length==0){
        return list;
      }
      if(rowlen == 1){
        for(int j=0;j<columnLen;j++){
            list.add(matrix[0][j]);
        }
        return list;
      }
      if(columnLen == 1){
        for(int j=0;j<rowlen;j++){
            list.add(matrix[j][0]);
        }
        return list;
      }

      int[][] flag= new int[rowlen][columnLen];
      int i = 0;
      int j = 0;
      //0向右,1向下,2向左,3向上。
      int direction = 0 ;
      while(true){ 
        if(direction==0){//0向右
            while(j<columnLen && flag[i][j]==0){
                list.add(matrix[i][j]);
                flag[i][j]=1;
                j++;
            }
            j--;
            i++;
            direction=1;
        }
        if(direction==1){//1向下
            while(i<rowlen&& flag[i][j]==0){
                list.add(matrix[i][j]);
                flag[i][j]=1;
                i++;
            }
            i--;
            j--;
            direction=2;//向左
        }
        if(direction==2){//向左
            while(j>-1 && flag[i][j]==0){
                list.add(matrix[i][j]);
                flag[i][j]=1;
                j--;
            }
            j++;
            i--;
            direction=3;//向上
        }
        if(direction==3){//向上
            while(i>-1 && flag[i][j]==0){
                list.add(matrix[i][j]);
                flag[i][j]=1;
                i--;
            }
            i++;
            j++;
            direction=0;//向上
        }
        if(flag[i][j]==1){
            break;
        }

      }
      return list;

    }
}
相关推荐
杰克尼34 分钟前
springCloud_day07(MQ高级)
java·spring·spring cloud
MediaTea2 小时前
AI 术语通俗词典:矩阵乘法
人工智能·线性代数·矩阵
NHuan^_^2 小时前
SpringBoot3 整合 SpringAI 实现ai助手(记忆)
java·人工智能·spring boot
Mr_Xuhhh2 小时前
从ArrayList到LinkedList:理解链表,掌握Java集合的另一种选择
java·数据结构·链表
错把套路当深情3 小时前
Java 全方向开发技术栈指南
java·开发语言
han_hanker3 小时前
springboot 一个请求的顺序解释
java·spring boot·后端
MaCa .BaKa3 小时前
44-校园二手交易系统(小程序)
java·spring boot·mysql·小程序·maven·intellij-idea·mybatis
希望永不加班3 小时前
SpringBoot 静态资源访问(图片/JS/CSS)配置详解
java·javascript·css·spring boot·后端
oh LAN3 小时前
RuoYi-Vue-master:Spring Boot 4.x (JDK 17+) (环境搭建)
java·vue.js·spring boot
ch.ju3 小时前
Java程序设计(第3版)第二章——java的数据类型:小数
java