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

    }
}
相关推荐
SamDeepThinking12 分钟前
第1篇-开篇词:几亿用户规模下,我们是怎么做C端高并发商品系统的
java·后端·架构
weisian15112 分钟前
Java并发编程--47-分布式ID生成器:雪花算法(Snowflake)与时钟回拨问题
java·算法·时钟回拨·雪花算法id
itzixiao13 分钟前
L1-066 猫是液体(5分)[java][python]
java·开发语言·python·算法
冷小鱼21 分钟前
MyBatis 与 MyBatis-Plus:从入门到精通的完整指南
java·tomcat·mybatis
DolphinScheduler社区30 分钟前
DolphinScheduler 3.3.2 如何调用 DataX 3.0 + SeaTunnel 2.3.12?附 Demo演示!
java·spark·apache·海豚调度·大数据工作流调度
亦暖筑序1 小时前
AI 客服系统安全加固:JWT 鉴权 + Bucket4j 三层限流
java·架构
xhuiting1 小时前
项目技术总结
java
某人辛木1 小时前
JDK安装配置
java·开发语言
counting money1 小时前
Spring框架基础(依赖注入-全注解形式)
java·数据库·spring
小王师傅661 小时前
【Java结构化梳理】泛型-初步了解-下
java·开发语言