螺旋矩阵(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;

    }
}
相关推荐
小白不太白9501 分钟前
设计模式之 访问者模式
java·设计模式·访问者模式
怀旧66612 分钟前
Java LinkedList 讲解
java·开发语言·后端·个人开发
冷心笑看丽美人12 分钟前
setter方法注入(Java EE 学习笔记07)
java·笔记·学习·spring·java-ee·javaee
夏子曦27 分钟前
java——Tomcat连接池配置NIO、BIO、APR
java·tomcat
耀耀_很无聊35 分钟前
第11章 Spring MVC执行流程
java·spring·mvc·springmvc
一直要努力哦35 分钟前
Spring源码的分析之启动流程
java·后端·spring
编程修仙38 分钟前
Java线程同步Synchronized
java·开发语言
Jack_abu39 分钟前
责任链模式在spring security过滤器链中的应用
java·责任链模式·springsecurity
it噩梦3 小时前
Springboot 实现Server-Sent Events
java·spring boot·后端
鸽鸽程序猿3 小时前
【JavaEE】Spring Boot 项目创建
java·spring boot·java-ee