顺时针遍历矩阵一题里面一行代码看不懂,求教
https://fishc.com.cn/thread-178186-1-3.htmlmatrix = [,
,
]
rows = len(matrix)
cols = len(matrix)
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)
# 从上往下遍历
for row in range(top + 1, bottom + 1):
result.append(matrix)
if left < right and top < bottom:
# 从右往左遍历
for col in range(right - 1, left, -1):
result.append(matrix)
# 从下往上遍历
for row in range(bottom, top, -1):
result.append(matrix)
left = left + 1
right = right - 1
top = top + 1
bottom = bottom - 1
print(result)
为什么要加这句,外面大的条件不是已经写明了,left<= right以及top 小于等于bottom么 这东西也有的叫 蛇形矩阵
就是从外向内 一圈一圈的回旋直到最后一个元素
你可以自己实现一下 然后再对比一下 wp231957 发表于 2022-7-8 08:42
这东西也有的叫 蛇形矩阵
就是从外向内 一圈一圈的回旋直到最后一个元素
你可以自己实现一下 然后再 ...
好,谢谢。看来只有再自己走一遍了。 不知道楼主,找到原因没有,提供一下思路:
可以看到在while循环体的代买中,if语句前面的四条语句并没有修改left、right、top和bottom四个变量的值,所以但从判断条件可以知道,if 语句为了将 left=right或top=bottom这个特殊情况下做不一样的处理,至于有什么不一样,自己脑子里面把代码跑一下应该就有答案 lightninng 发表于 2022-7-9 21:52
不知道楼主,找到原因没有,提供一下思路:
可以看到在while循环体的代买中,if语句前面的四条语句并没有 ...
谢谢,我用笔画了下,这样可以在最后一次遍历的时候,不让它往回遍历。
页:
[1]