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;
    }
}
相关推荐
REI-1 分钟前
黑马点评项目启动
java·后端
雅俗共赏1006 分钟前
医学图像重建中常用的正则化分类
算法
IronMurphy8 分钟前
【算法三十二】
算法
AlunYegeer9 分钟前
【JAVA】网关的管理原理和微服务的Interceptor区分
java·服务器·前端
Mr_Xuhhh12 分钟前
LeetCode 热题 100 刷题笔记:高频面试题详解(215 & 347)
算法·leetcode·排序算法
mmz120714 分钟前
贪心算法3(c++)
c++·算法·贪心算法
Cathy Bryant15 分钟前
拓扑学:曲面与圆环
笔记·线性代数·矩阵·拓扑学
j_xxx404_16 分钟前
蓝桥杯基础--排序模板合集II(快速,归并,桶排序)
数据结构·c++·算法·蓝桥杯·排序算法
月落归舟18 分钟前
排序算法---(四)
算法·排序算法
童话ing21 分钟前
【LeetCode】239.滑动窗口最大值
数据结构·算法·leetcode·golang