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;
    }
}
相关推荐
倔强的小石头_21 分钟前
【C语言指南】函数指针深度解析
java·c语言·算法
Yasin Chen26 分钟前
C# Dictionary源码分析
算法·unity·哈希算法
_Coin_-2 小时前
算法训练营DAY27 第八章 贪心算法 part01
算法·贪心算法
kangkang-4 小时前
PC端基于SpringBoot架构控制无人机(三):系统架构设计
java·架构·无人机
许小燚5 小时前
线性表——双向链表
数据结构·链表
界面开发小八哥6 小时前
「Java EE开发指南」如何用MyEclipse创建一个WEB项目?(三)
java·ide·java-ee·myeclipse
董董灿是个攻城狮6 小时前
5分钟搞懂什么是窗口注意力?
算法
Dann Hiroaki6 小时前
笔记分享: 哈尔滨工业大学CS31002编译原理——02. 语法分析
笔记·算法
idolyXyz6 小时前
[java: Cleaner]-一文述之
java
一碗谦谦粉6 小时前
Maven 依赖调解的两大原则
java·maven