19、矩阵-螺旋矩阵

思路:

这道题主要是对空间上有所思考,每次转一圈上右下左各减少一层。不妨设top,right,down,left,每次旋转一圈 top++,right--,down--,left++

代码如下:

复制代码
class Solution {
   public List<Integer> spiralOrder(int[][] matrix) {
        if (matrix==null||matrix.length==0||matrix[0].length==0){
            return new ArrayList<>();
        }
        int m=matrix.length;
        int n=matrix[0].length;
        List<Integer> list=new ArrayList<>();
        int total=m*n;
        int left=0;int right=n-1;int top=0;int down=m-1;

        while (list.size()<total) {
            //从左向右运动
            for (int col = left; col <= right && list.size() < total; col++) {
                list.add(matrix[top][col]);
            }
            //上边界下移
            top++;
            //从上往下运动
            for (int row = top; row <= down && list.size() < total; row++) {
                list.add(matrix[row][right]);
            }
            //有边界左移
            right--;
            //从右往左运动
            for (int col = right; col >= left && list.size() < total; col--) {
                list.add(matrix[down][col]);
            }
            //下边界上移
            down--;
            //从下往上
            for (int row = down; row >= top && list.size() < total; row--) {
                list.add(matrix[row][left]);
            }
            left++;
        }
        return list;
    }
}
相关推荐
许彰午10 小时前
03-三种开发模式
java·架构
遥感知识服务10 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶10 小时前
1-13-TimSort
算法
Rain的Java大神之路10 小时前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
ZJU_统一阿萨姆10 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
2602_9599609211 小时前
谢飞机面试大厂:Spring Boot、JVM、Redis、Kafka、微服务与音视频搜索场景求生实录
java·jvm·spring boot·redis·面试题
Zane19941211 小时前
CAS 与原子类:Java 如何实现无锁编程
java·开发语言
略略略咯咯11 小时前
AI玩具-study
java
叩码以求索12 小时前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
xier_ran13 小时前
【infra之路】GPU 存储层次总结:L1 / L2 / HBM
java·网络·数据库