鱼C论坛

 找回密码
 立即注册
查看: 1759|回复: 4

顺时针遍历矩阵一题里面一行代码看不懂,求教

[复制链接]
发表于 2022-7-8 00:27:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
https://fishc.com.cn/thread-178186-1-3.html
matrix = [[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]]
   
rows = len(matrix)
cols = len(matrix[0])
   
left = 0
right = cols - 1
top = 0
bottom = rows - 1
   
result = []
   
while left <= right and top <= bottom:
    # 从左往右遍历
    for col in range(left, right + 1):
        result.append(matrix[top][col])
   
    # 从上往下遍历
    for row in range(top + 1, bottom + 1):
        result.append(matrix[row][right])
   
    if left < right and top < bottom:
        # 从右往左遍历
        for col in range(right - 1, left, -1):
            result.append(matrix[bottom][col])
   
        # 从下往上遍历
        for row in range(bottom, top, -1):
            result.append(matrix[row][left])
   
    left = left + 1
    right = right - 1
    top = top + 1
    bottom = bottom - 1
   
print(result)

为什么要加这句,外面大的条件不是已经写明了,left<= right以及top 小于等于bottom么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-8 08:42:49 | 显示全部楼层
这东西也有的叫 蛇形矩阵
就是从外向内 一圈一圈的回旋  直到最后一个元素
你可以自己实现一下   然后再对比一下   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-8 10:16:38 | 显示全部楼层
wp231957 发表于 2022-7-8 08:42
这东西也有的叫 蛇形矩阵
就是从外向内 一圈一圈的回旋  直到最后一个元素
你可以自己实现一下   然后再 ...

好,谢谢。看来只有再自己走一遍了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-9 21:52:19 | 显示全部楼层
不知道楼主,找到原因没有,提供一下思路:
可以看到在while循环体的代买中,if语句前面的四条语句并没有修改left、right、top和bottom四个变量的值,所以但从判断条件可以知道,if 语句为了将 left=right或top=bottom这个特殊情况下做不一样的处理,至于有什么不一样,自己脑子里面把代码跑一下应该就有答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-10 21:09:02 | 显示全部楼层
lightninng 发表于 2022-7-9 21:52
不知道楼主,找到原因没有,提供一下思路:
可以看到在while循环体的代买中,if语句前面的四条语句并没有 ...

谢谢,我用笔画了下,这样可以在最后一次遍历的时候,不让它往回遍历。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 16:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表