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

    }
}
相关推荐
源码宝1 小时前
【智慧工地源码】智慧工地云平台系统,涵盖安全、质量、环境、人员和设备五大管理模块,实现实时监控、智能预警和数据分析。
java·大数据·spring cloud·数据分析·源码·智慧工地·云平台
David爱编程2 小时前
面试必问!线程生命周期与状态转换详解
java·后端
LKAI.2 小时前
传统方式部署(RuoYi-Cloud)微服务
java·linux·前端·后端·微服务·node.js·ruoyi
HeyZoeHey2 小时前
Mybatis执行sql流程(一)
java·sql·mybatis
2301_793086872 小时前
SpringCloud 07 微服务网关
java·spring cloud·微服务
柳贯一(逆流河版)4 小时前
Spring 三级缓存:破解循环依赖的底层密码
java·spring·缓存·bean的循环依赖
该用户已不存在5 小时前
OpenJDK、Temurin、GraalVM...到底该装哪个?
java·后端
TT哇6 小时前
@[TOC](计算机是如何⼯作的) JavaEE==网站开发
java·redis·java-ee
Tina学编程6 小时前
48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径
java·算法
青川入梦6 小时前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis