LeetCode每日一题——螺旋矩阵

题目要求:

给你一个 mn 列的矩阵 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 directions42 = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};//作为方向偏移量

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

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

*returnSize = 0;

return NULL;

}

int rows = matrixSize, columns = matrixColSize0;//分别表示矩阵的行数和列数

int visitedrowscolumns;//用来标记元素是否被访问

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++) {

orderi = matrixrowcolumn;

visitedrowcolumn = true;//访问完标记该位置

int nextRow = row + directionsdirectionIndex0, nextColumn = column + directionsdirectionIndex1;

if (nextRow < 0 || nextRow >= rows || nextColumn < 0 || nextColumn >= columns || visitednextRownextColumn) {

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

}

row += directionsdirectionIndex0;//更新行

column += directionsdirectionIndex1;//更新列

}

return order;//返回最终结果

}

作者:力扣官方题解

来源:力扣(LeetCode)

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

相关推荐
Logic1011 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
罗西的思考2 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
Logic1013 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和
小哈里3 小时前
【知识】从学科到实践:自然・工程・社科・人文|算法・研发・产品・品牌设计
程序人生·算法·产品·设计·工程
小π军4 小时前
最大重叠区间数量
数据结构·算法
镜像视界(浙江)科技有限公司4 小时前
《视频孪生之上:二维展示终结,三维空间计算重构城市逻辑》——跨摄像连续表达 × 三角测量厘米级定位 × 动态轨迹建模,构建新一代城市空间
大数据·人工智能·算法·矩阵·音视频·空间计算
a187927218315 小时前
【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出
算法·leetcode·双指针·滑动窗口·原理·模板·算法讲解
铭哥的编程日记5 小时前
从一道 LeetCode Hard 到吃透一类题:加权区间调度「排序 + 二分 + DP」
算法·leetcode·职场和发展
Logic1015 小时前
C语言/数据结构字符串题解:找出DNA序列中未配对的独特序列——排序+遍历(O(nlogn))
c语言·数据结构·字符串·数组·排序·时间复杂度·算法题
Navigator_Z5 小时前
LeetCode //C - 1248. Count Number of Nice Subarrays
c语言·算法·leetcode