LeetCode热题100 螺旋矩阵

题目描述

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

提示:

m == matrix.length

n == matrixi.length

1 <= m, n <= 10

-100 <= matrixij <= 100

思路

1 定义dx和dy数组代表4个方向。

2 定义times数组代表有n行和m列。

3 每次走完一个方向,会有一行减去或者一列减去。

4 模拟走完这个过程即可。

代码

cpp 复制代码
class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
    	int n = matrix.size();
    	int m = matrix[0].size();
    	int dx[] = {0, 1, 0, -1}, dy[]= {1, 0, -1, 0}; // 方向 
    	int times[] = {m, n}; // 行和列的大小 
        vector<int>ans; // 答案
		int x = 0, y = -1, pos = 0 ; // x和y初始化坐标, pos代表方向和行列
        while(ans.size() < n * m)
        {
        	for(int i = 0; i < times[pos % 2]; ++i)
			{
				x += dx[pos];
				y += dy[pos];	
				ans.push_back(matrix[x][y]);
			}	
			pos = (pos + 1) % 4;
			--times[pos % 2] ;
		}    
		return ans; 
	}	
};
相关推荐
生成论实验室17 小时前
自动驾驶:一个自主运动的系统
人工智能·算法·机器学习·语言模型·机器人·自动驾驶·安全架构
sheeta199817 小时前
LeetCode 每日一题笔记 日期:2026.06.16 题目:3612. 字符串特殊符号处理
笔记·算法·leetcode
CoderYanger17 小时前
A.每日一题:2095. 删除链表的中间节点
java·数据结构·程序人生·leetcode·链表·面试·职场和发展
青山木17 小时前
Hot 100 --- 矩阵置零
线性代数·算法·leetcode·矩阵·哈希算法
Jasmine_llq17 小时前
《B4264 [GESP202503 四级] 二阶矩阵》
线性代数·算法·矩阵·二维矩阵遍历枚举所有2×2矩阵·交叉乘积等式条件判断·输入输出快读加速·长整型防溢出计数统计
不知名的老吴18 小时前
面经经验分享|算法和数据结构考察
数据结构·经验分享·算法
叫我:松哥18 小时前
基于Python flask的中学可控智能命题系统设计与实现,整合遗传算法、DeepSeek 大模型及数据库技术构建一体化应用
数据库·人工智能·python·算法·机器学习·flask·遗传算法
CoderYanger18 小时前
A.每日一题:3612. 用特殊操作处理字符串 I
java·程序人生·leetcode·面试·职场和发展·学习方法·改行学it
黎阳之光18 小时前
黎阳之光透明大楼:实景孪生重构智慧建筑全新范式
人工智能·物联网·算法·安全·数字孪生
承渊政道18 小时前
【MySQL数据库学习】(MySQL表的内外连接)
数据库·学习·mysql·leetcode·bash·数据库开发·数据库系统