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

LeetCode每日一题——螺旋矩阵

题目要求:

给你一个 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]

代码实现:

int directions[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};//作为方向偏移量

int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize) {

    if (matrixSize == 0 || matrixColSize[0] == 0) {//包含矩阵无元素的情况

        *returnSize = 0;

        return NULL;

    }

    int rows = matrixSize, columns = matrixColSize[0];//分别表示矩阵的行数和列数

    int visited[rows][columns];//用来标记元素是否被访问

    memset(visited, 0, sizeof(visited));

    int total = rows * columns;

    int* order = malloc(sizeof(int) * total);

    *returnSize = total;

    int row = 0, column = 0;

    int directionIndex = 0;//作为方向索引

    for (int i = 0; i < total; i++) {

        order[i] = matrix[row][column];

        visited[row][column] = true;//访问完标记该位置

        int nextRow = row + directions[directionIndex][0], nextColumn = column + directions[directionIndex][1];

        if (nextRow < 0 || nextRow >= rows || nextColumn < 0 || nextColumn >= columns || visited[nextRow][nextColumn]) {

            directionIndex = (directionIndex + 1) % 4;//控制directionIndex在0~3之间,继续下一个循环

        }

        row += directions[directionIndex][0];//更新行

        column += directions[directionIndex][1];//更新列

    }

    return order;//返回最终结果

}

作者:力扣官方题解

来源:力扣(LeetCode)

坚持编程,我一直在路上!

http://www.dtcms.com/a/483404.html

相关文章:

  • lamp网站开发实战工程机械网官网
  • .net AI MCP 入门 适用于模型上下文协议的 C# SDK 简介(MCP)
  • 做网站哪里需要用钱dedecms做电影网站
  • ZYNQ裸机开发指南笔记
  • Starlake:一款免费开源的ETL数据管道工具
  • 线性代数 | 要义 / 本质 (上篇)
  • 求网站建设和网页设计的电子书自己怎么给网站做优化
  • DM常用命令
  • 有趣的网站代码短视频运营公司网站建设
  • 网站模板二次开发网站怎么投放广告
  • Symmetric functions and hall polynomials 1.1 总结
  • 学好网页设计与网站建设的意义北京的软件公司
  • TCP三次握手与四次挥手详解
  • C++智能指针解析
  • Java 大视界 -- Java 大数据中的时间序列预测算法在金融市场波动预测中的应用与优化
  • 如何看网站关键词用discuz做的手机网站
  • 使用spring-ai时遇到的一些问题
  • 基于 recorder-core 的实时音频流与声纹识别技术实践
  • 成都没有做网站的公司详谈电商网站建设四大流程
  • 找平面设计师网站网页传奇游戏下载
  • C语言--复杂数据类型
  • 如何用“内容+AI”组合拳赋能导购,实现品牌高效增长?
  • 扁平化网站设计趋势wordpress可视化编辑器 windows
  • 网站数据维护滨州网站建设公司报价
  • C++ 之 串口通讯封装类
  • WHAT - 前端性能指标(网络相关指标)
  • 阿里云服务器怎么建网站常德市网络科技有限公司
  • 工程记录:使用tello edu无人机进行计算机视觉工作(手势识别,yolo3搭载)
  • 河北seo网站设计网站视频放优酷里面怎么做
  • 频偏估计方法--快速傅里叶变换(FFT)估计法