当前位置: 首页 > article >正文

leetcode day23 54 螺旋矩阵

54 螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

解题思路:设四个变量top,bottom,left,right,分别为上下左右

最外层循环条件为left<=right&&top<=bottom,保证最后同一行和同一列仍然可以顺时针遍历。分四次循环遍历,从左往右,从上往下,从右往左,从下往上。每次循环结束后更新四个变量其中一个的值,注意考虑越界情况。

二维数组行m=matrixSize,列n=matrixColSize[0]

int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize) {
    int m=matrixSize,n=matrixColSize[0];//二维数组的行列
    int *a=(int *)malloc(sizeof(int)*m*n);
    *returnSize=0;
    int left=0,right=n-1,top=0,bottom=m-1;
    int i,j;
    //上-->下开始左开右闭
    while(left<=right&&top<=bottom){
        for(j=left;j<=right;j++){
            a[(*returnSize)++]=matrix[top][j];
        }
        top++;
        if(top>bottom)break;
        for(i=top;i<=bottom;i++){
            a[(*returnSize)++]=matrix[i][right];
        }
        right--;
        if(left>right)break;
        for(j=right;j>=left;j--){
              a[(*returnSize)++]=matrix[bottom][j];
        }
        bottom--;
        if(top>bottom)break;
        for(i=bottom;i>=top;i--){
            a[(*returnSize)++]=matrix[i][left];
        }
        left++;
        if(left>right)break;
    }
    return a;
}

http://www.kler.cn/a/563043.html

相关文章:

  • 音视频编码和封装格式
  • 基于DeepSeek-R1-70b的医疗AI训练推理框架的详细解析
  • 【万字长文】开源之播对话白鲸开源CEO郭炜--乐观主义的开源精神走得更远
  • Imagination 最新的D系列GPU IP 为智能手机和其他电力受限设备上图形和计算工作负载的高效加速设定了新的标准
  • Python 流程控制终极指南:if-else 和 for-while深度解析
  • 单片机病房呼叫系统设计
  • Java常见设计模式(上):创建型模式
  • 介绍一下自动驾驶 泊车算法
  • Agilent83630B信号发生器,可提供用来满足各种应用需要的机型选择机会
  • 【医学分割】基于显式形状先验学习的医学图像分割
  • Android内存优化指南:从数据结构到5R法则的全面策略
  • PCL源码分析:曲面法向量采样
  • RK3568平台开发系列讲解(内核篇)Linux 内核启动流程
  • 观成科技:海莲花“PerfSpyRAT”木马加密通信分析
  • 微服务架构与传统的单体架构有什么区别?微服务架构(Spring Cloud + Maven)强在哪?
  • LeetCode 1472.设计浏览器历史记录:一个数组完成模拟,单次操作均O(1)
  • css实现左右切换平滑效果
  • 数字人AIGC实训室:以AI技术赋能数字化教育
  • python基础学习day01
  • 高效能计算与高速数据传输的完美结合:飞腾D2000处理器与复旦微双FPGA集成主板