【LeetCode-中等题】54. 螺旋矩阵

文章目录

题目

方法一:按层模拟

思路就是定义四个指针边界,按顺序扫完一遍,再缩小区域再扫描

java 复制代码
 public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> order = new ArrayList<Integer>(); 
        int matrixlength = matrix.length;
        int matrixNumlength = matrix[0].length;
        //判空条件
        if(matrix==null ||  matrixlength == 0 || matrixNumlength == 0) return order;
        //定义四个指针边界
        int top = 0;//行边界
        int bot = matrixlength-1;
        int left = 0;//列边界
        int right = matrixNumlength-1;
        while(left <= right && top <= bot){
        // 首先循环最外层  顺序依次为右下左上
           // (left)                   (right)
        // (top)1,      2,      3,       4 (top)
        //      5,      6,      7,       8
        // (bot)9,      10,     11,     12(bot)
           // (left)                    (right)

        //右 -->  左  最上层
        for(int i = left ;i <= right;i++){
            order.add(matrix[top][i]);
        }

         //上 -->  下  最右层
        for(int i = top+1 ;i <= bot;i++){
            order.add(matrix[i][right]);
        }
    if(left!=right  && bot!=top){//  如果right和left重合了  说明上往下扫描了一遍,就不需要再从下往上重复扫一遍了
                                //  如果 bot 和 top 重合了  说明左往右扫描了一遍,就不需要再从右往左重复扫一遍了
         //左 -->  右  最下层
        for(int i = right-1 ;i >= left;i--){
            order.add(matrix[bot][i]);
        }
  
          //下 -->  上  最左层
        for(int i = bot-1 ;i >top;i--){
            order.add(matrix[i][left]);
        }
  }    
        //往里缩一圈
        left  ++;
        right --;
        top ++;
        bot --;
        }
        return order;
    }
相关推荐
paeamecium8 小时前
【PAT甲级真题】- String Subtraction (20)
数据结构·c++·算法·pat考试·pat
YL200404268 小时前
047从前序与中序遍历序列构造二叉树
算法·leetcode
极梦网络无忧8 小时前
password_hash
算法·哈希算法
计算机安禾9 小时前
【c++面向对象编程】第25篇:仿函数(函数对象):重载operator()
开发语言·c++·算法
2601_957787589 小时前
数据驱动的多平台内容矩阵运营效果分析与闭环优化技术
大数据·人工智能·矩阵
周末也要写八哥9 小时前
在C++中使用预定义宏
开发语言·c++·算法
学会870上岸华师10 小时前
C 语言程序设计——第一章课后编程题
c语言·开发语言·学习·算法
小马过河R10 小时前
RAG检索优化策略:系统性四层框架解析
人工智能·python·算法·ai·llm·rag·问答
AI技术控10 小时前
论文解读:AE-TCN-SA——基于自编码器、TCN 与自注意力机制的锂电池内短路诊断方法
人工智能·python·深度学习·算法·机器学习·自然语言处理
ʚ希希ɞ ྀ10 小时前
动态规划基础知识---爬楼梯
算法·动态规划