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

Leetcode刷题记录30——螺旋矩阵

题源:https://leetcode.cn/problems/spiral-matrix/description/?envType=study-plan-v2&envId=top-100-liked

题目描述:
在这里插入图片描述

思路一:
💡 解题思路:模拟边界法(Layer by Layer)
我们可以把矩阵想象成一圈圈的**“洋葱皮”**,每一层从外向内顺时针访问:

  • 先访问最上面一行(从左到右)
  • 然后访问最右边一列(从上到下)
  • 接着访问最下面一行(从右到左)
  • 最后访问最左边一列(从下到上)

然后向内收缩边界,继续遍历下一层,直到所有元素都被访问完为止。

代码如下:

class Solution(object):def spiralOrder(self, matrix):""":type matrix: List[List[int]]:rtype: List[int]"""top = 0bottom = len(matrix) - 1left = 0right = len(matrix[0]) - 1result = []while top <= bottom and left <= right:# 从左到右for j in range(left, right + 1):result.append(matrix[top][j])top += 1# 从上到下:for i in range(top, bottom + 1):result.append(matrix[i][right])right -= 1# 从右到左(判断是否还有行)if left <= right and top <= bottom:for j in range(right, left - 1, -1):result.append(matrix[bottom][j])bottom -= 1# 从下到上(判断是否还有列)if left <= right and top <= bottom:for i in range(bottom, top - 1, -1):result.append(matrix[i][left])left += 1return result

执行时间如下:
在这里插入图片描述

相关文章:

  • linux-文件操作
  • FreeRTOS菜鸟入门(十一)·信号量·二值、计数、递归以及互斥信号量的区别·优先级翻转以及继承机制详解
  • 基于MATLAB图像中的圆形目标识别和标记
  • MCUboot 中的 BOOT_SWAP_TYPE_PERM 功能介绍
  • 2048游戏(含Python源码)
  • 大模型推理--从零搭建大模型推理服务器:硬件选购、Ubuntu双系统安装与环境配置
  • 定位理论第一法则在医疗AI编程中的应用
  • 【PaaS与AI融合】MLOps平台的架构设计
  • 【MCP Node.js SDK 全栈进阶指南】专家篇(1):MCP-SDK扩展与定制
  • 【实验笔记】Kylin-Desktop-V10-SP1麒麟系统知识 —— 开机自启Ollama
  • 软考 系统架构设计师系列知识点之杂项集萃(54)
  • 《Python星球日记》第31天:Django 框架入门
  • JAVA设计模式——(十一)建造者模式(Builder Pattern)
  • 计算机视觉与深度学习 | 图像匹配算法综述
  • 【AI论文】像素修补师(PixelHacker):具有结构和语义一致性的图像修复(Image Inpainting)
  • Redis数据结构ZipList,QuickList,SkipList
  • linux、window安装部署nacos
  • MinIO实现https访问
  • 全局过滤器与局部过滤器: Vue中的文本格式化工具
  • Linux中web服务器的部署及优化
  • 100%关税!特朗普要让美国电影100%美国制造
  • 环球马术冠军赛圆满落幕,是马术盛宴更是中国马产业强大引擎
  • 晋城一男子实名举报村支书打伤其67岁父亲,镇政府:案件正在侦办中
  • 全国铁路旅客发送量连续3天同比增幅超10%,今日预计发送1800万人次
  • 全红婵/陈芋汐夺得跳水世界杯总决赛女子双人10米台冠军
  • 4月人民币对美元即期汇率微跌,今年以来升值0.48%