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;
    }
}
相关推荐
Seven971 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55110 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河10 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
地平线开发者11 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮11 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者12 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考12 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
桦说编程13 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅15 小时前
Java面向对象入门(类与对象,新手秒懂)
java