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

LeetCode 54. 螺旋矩阵 (C++实现)

1. 题目描述

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

2. 解题思路

首先定义左指针left、右指针right,上指针top,下指针bottom,然后从左到右,从上到下遍历,遇到边界的时候指针相应地变化。

3. 代码实现

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        int left = 0;
        int top = 0;
        int right = matrix[0].size()-1;
        int bottom = matrix.size()-1;
        vector<int> ans;

        while(left <= right || top <= bottom)
        {
            for (int i = left; i <= right; i++)
            {
                ans.push_back(matrix[top][i]);
            }
            top++;
            if (top > bottom) break;
            for (int i = top; i <= bottom; i++)
            {
                ans.push_back(matrix[i][right]);
            }
            right--;
            if (right < left) break;
            for (int i = right; i >= left; i--)
            {
                ans.push_back(matrix[bottom][i]);
            }
            bottom--;
            if (bottom < top) break;
            for (int i = bottom; i >= top; i--)
            {
                ans.push_back(matrix[i][left]);
            }
            left++;
            if (left > right) break;
        }
        return ans;
    }
};

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

相关文章:

  • 5QI DSCP映射
  • 本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——13使用Resnet-Bin
  • 0.96寸OLED显示屏详解
  • UE5仿漫威争锋灵蝶冲刺技能
  • Springboot应用开发:配置类整理
  • Linux中Mysql5.7主从架构(一主多从)配置教程
  • Deformable DETR:Deformable Transformers for End-to-End Object Detection论文学习
  • 【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
  • Springboot项目本地连接并操作MySQL数据库
  • 数据结构概念介绍
  • Javascript数据结构——二叉树篇
  • 微信小程序xr-frame透明视频实现
  • 服务器证书原理
  • WebContainerapi 基础(Web IDE 技术探索 一)
  • DevOps工程技术价值流:制品库Nexus与Harbor的实战探索
  • 重温设计模式--适配器模式
  • Spring - 12 ( 7000 字 Spring 入门级教程 )
  • Echarts之yAxis属性超超超级详情版学习
  • 灵当CRM getMyAmbassador SQL注入漏洞复现
  • Unity3D VFX事件系统详解
  • 在 Docker 中部署 Jenkins,并完成项目的构建和发布
  • 【C#】List求并集、交集、差集
  • Postman接口测试工具使用详解
  • 中国信通院致信感谢易保全:肯定贡献能力,期许未来合作
  • 【QSS样式表 - ⑥】:QPushButton控件样式
  • nginx采用域名访问后台接口时报400