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

高新区做网站的公司天门市住房和城乡建设网站

高新区做网站的公司,天门市住房和城乡建设网站,seo精华网站,做网站采集什么文章好LeetCode 热题 100 | 54. 螺旋矩阵 大家好,今天我们来解决一道经典的算法题——螺旋矩阵。这道题在LeetCode上被标记为中等难度,要求我们按照顺时针螺旋顺序返回矩阵中的所有元素。下面我将详细讲解解题思路,并附上Python代码实现。 问题描述…

LeetCode 热题 100 | 54. 螺旋矩阵

大家好,今天我们来解决一道经典的算法题——螺旋矩阵。这道题在LeetCode上被标记为中等难度,要求我们按照顺时针螺旋顺序返回矩阵中的所有元素。下面我将详细讲解解题思路,并附上Python代码实现。


问题描述

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

解题思路

核心思想
  1. 边界模拟法

    • 定义矩阵的四个边界:上边界 top、下边界 bottom、左边界 left、右边界 right
    • 按照顺时针方向(右→下→左→上)依次遍历矩阵的边界,并不断调整边界。
  2. 遍历顺序

    • 从左到右遍历上边界,完成后上边界下移。
    • 从上到下遍历右边界,完成后右边界左移。
    • 从右到左遍历下边界,完成后下边界上移。
    • 从下到上遍历左边界,完成后左边界右移。
  3. 终止条件

    • 当所有元素都被遍历时(即 top > bottomleft > right),停止遍历。

Python代码实现

def spiralOrder(matrix):if not matrix:return []top, bottom = 0, len(matrix) - 1left, right = 0, len(matrix[0]) - 1result = []while top <= bottom and left <= right:# 从左到右遍历上边界for i in range(left, right + 1):result.append(matrix[top][i])top += 1# 从上到下遍历右边界for i in range(top, bottom + 1):result.append(matrix[i][right])right -= 1# 检查是否还有下边界需要遍历if top <= bottom:# 从右到左遍历下边界for i in range(right, left - 1, -1):result.append(matrix[bottom][i])bottom -= 1# 检查是否还有左边界需要遍历if left <= right:# 从下到上遍历左边界for i in range(bottom, top - 1, -1):result.append(matrix[i][left])left += 1return result# 测试示例
matrix1 = [[1,2,3],[4,5,6],[7,8,9]]
matrix2 = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]print(spiralOrder(matrix1))  # 输出: [1,2,3,6,9,8,7,4,5]
print(spiralOrder(matrix2))  # 输出: [1,2,3,4,8,12,11,10,9,5,6,7]

代码解析

  1. 初始化边界

    • topbottom 分别表示矩阵的上下边界。
    • leftright 分别表示矩阵的左右边界。
  2. 顺时针遍历

    • 从左到右:遍历上边界,完成后将 top 下移。
    • 从上到下:遍历右边界,完成后将 right 左移。
    • 从右到左:遍历下边界(需检查 top <= bottom),完成后将 bottom 上移。
    • 从下到上:遍历左边界(需检查 left <= right),完成后将 left 右移。
  3. 终止条件

    • top > bottomleft > right 时,说明所有元素已被遍历。

复杂度分析

  • 时间复杂度:O(m × n),其中 m 是矩阵的行数,n 是矩阵的列数。我们需要遍历矩阵中的每个元素一次。
  • 空间复杂度:O(1),除了输出结果外,只使用了常数个额外空间。

示例运行

示例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]

进阶:其他解法

方法一:递归法
def spiralOrder_recursive(matrix):if not matrix:return []result = []rows, cols = len(matrix), len(matrix[0])def helper(top, bottom, left, right):if top > bottom or left > right:return# 从左到右遍历上边界for i in range(left, right + 1):result.append(matrix[top][i])top += 1# 从上到下遍历右边界for i in range(top, bottom + 1):result.append(matrix[i][right])right -= 1# 检查是否还有下边界需要遍历if top <= bottom:# 从右到左遍历下边界for i in range(right, left - 1, -1):result.append(matrix[bottom][i])bottom -= 1# 检查是否还有左边界需要遍历if left <= right:# 从下到上遍历左边界for i in range(bottom, top - 1, -1):result.append(matrix[i][left])left += 1helper(top, bottom, left, right)helper(0, rows - 1, 0, cols - 1)return result
  • 时间复杂度:O(m × n)
  • 空间复杂度:O(min(m, n)),递归调用的栈空间。

总结

通过使用边界模拟法,我们可以高效地按照顺时针螺旋顺序遍历矩阵中的所有元素。这种方法直观且易于实现,适合大多数场景。希望这篇题解对大家有所帮助,如果有任何问题,欢迎在评论区留言讨论!

关注我,获取更多算法题解和编程技巧!


文章转载自:

http://CnZyeoPE.gmswp.cn
http://EbhnVp3m.gmswp.cn
http://VYOZACxw.gmswp.cn
http://dshCh7IX.gmswp.cn
http://jmztRKMC.gmswp.cn
http://aBxW34WX.gmswp.cn
http://r7aeOPXT.gmswp.cn
http://SQp6Joho.gmswp.cn
http://fqpsEQ2G.gmswp.cn
http://nkEN8SZn.gmswp.cn
http://RH2OesA1.gmswp.cn
http://iYsUyDzl.gmswp.cn
http://bpDqfTQA.gmswp.cn
http://AqIwDpvd.gmswp.cn
http://bxvAiAiN.gmswp.cn
http://t23q1fQv.gmswp.cn
http://LquzDkTu.gmswp.cn
http://J498lS1Z.gmswp.cn
http://2VVvEz4i.gmswp.cn
http://SOLgGHFv.gmswp.cn
http://jj5lRlaU.gmswp.cn
http://tTeknAWu.gmswp.cn
http://frY7kM5r.gmswp.cn
http://CQ8wlmBj.gmswp.cn
http://9dXPf5xg.gmswp.cn
http://vNH5NpF3.gmswp.cn
http://ssqdyjzG.gmswp.cn
http://XR60KMkT.gmswp.cn
http://JQEvATOM.gmswp.cn
http://uNCkRxVf.gmswp.cn
http://www.dtcms.com/wzjs/620872.html

相关文章:

  • 中国建设银行官方网站e路航下载网站推广是网站建设完成之后的长期工作。
  • 深圳做手机商城网站建设龙华属于深圳哪个区
  • 外贸soho自己建站国家品牌网
  • 做校园文化展览的网站开源网站内容管理系统
  • 网站制作教程一般地建网络爱站网怎么打不开
  • 网站开发 放大图片全国水利建设市场信用信息平台网站
  • dede无法更新网站主页到火狐浏览器下载
  • 设计师网站都有哪些四川城乡建设部网站首页
  • 外国黄冈网站推广平台保洁公司网站源码
  • 网站建设创业经历免费源代码网站
  • 内部网站建设软件wordpress filter
  • 网站怎么做才能被百度收录创建免费网站的步骤
  • 科技软件公司网站模板怎么查一个地区的所有网站域名
  • 做预算查价格的网站是哪个网站开发实战课程
  • 做网站做的好的公司广告设计与制作学啥
  • 北京网站建设seo在线商城怎么弄的
  • 宝安网站建设信科免费东莞公司的网页怎么做的
  • 如何在百度开个网站东莞+网站+建设+汽车
  • 茂名公司网站开发网站建设要什么
  • 县级以下不允许建设网站北京网站制建设公司
  • 较便宜的网站建设云南互联网公司
  • 深圳网站建设服务找哪家商城网站开发文档
  • 南昌的网站建设公司网站制作洋网络
  • 做网站的流程与步骤国企网站建设需要注意
  • 网站备案去哪注销网站开发网站开发公司哪家好
  • 网站建设柚子网络科技官网小程序招商
  • 海外网站空间深圳网络做网站
  • 南京建设企业网站的公司在珠海注册公司需要什么资料
  • js网站模板免费下载珠海市做网站
  • 政务服务网站的建设原则建站外贸网站建设