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;
    }
}
相关推荐
UCoding1 分钟前
我们来学AI编程 -- vscode开发java
java·vscode·ai编程
一线大码3 分钟前
开发 Java 项目时的命名规范
java·spring boot·后端
neoooo3 分钟前
Apollo兜底口诀
java·后端·架构
程序员小假4 分钟前
什么是线程池?它的工作原理?
java·后端
盖世英雄酱5813611 分钟前
java 深度调试【第一章:堆栈分析】
java·后端
前端小刘哥36 分钟前
赋能在线教育与企业培训:视频直播点播平台EasyDSS视频点播的核心技术与应用实践
算法
本就一无所有 何惧重新开始38 分钟前
Redis技术应用
java·数据库·spring boot·redis·后端·缓存
吗~喽42 分钟前
【LeetCode】四数之和
算法·leetcode·职场和发展
低音钢琴1 小时前
【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解
java·spring boot·后端
Net_Walke1 小时前
【散列函数】哈希函数简介
算法·哈希算法