【发布时间】:2020-09-04 23:21:40
【问题描述】:
背景
我正在解决一个标准的LeetCode Question 48。我知道有很多解决方案,但我正在尝试用一种对我有意义的方法来解决这个问题。我基本上是在尝试将矩阵旋转 90 度。我正在尝试交换方阵每一层的每个值。
这是我的代码:
def rotate_image(matrix):
top = 0
bottom = len(matrix)
left = 0
right = len(matrix[0])
total_layers = round(bottom / 2)
for i in range(0, total_layers):
for j in range(left, right - 1):
top_left = matrix[top][j]
top_right = matrix[j][right - 1]
bottom_right = matrix[bottom - 1][right - (j + 1)]
bottom_left = matrix[bottom - (1+j)][left]
matrix[top][j] = bottom_left
matrix[j][right - 1] = top_left
matrix[bottom - 1][right - (j + 1)] = top_right
matrix[bottom - (1 + j)][left] = bottom_right
top += 1
left += 1
right -= 1
bottom -= 1
print(matrix)
由于某种原因,我的代码通过了大多数情况,但是当我尝试以下情况时
print(rotate_image([[5, 1, 9, 11], [2, 4, 8, 10], [13, 3, 6, 7], [15, 14, 12, 16]]))
它失败了。我花了 2 个小时尝试调试它,我可能正在查看某些东西,但不确定它到底是什么。
我希望得到一些反馈。
【问题讨论】:
-
用笔和纸对一个小的失败示例执行您的算法。如果部分结果确实符合您对最终结果的期望,请在每一步之后进行比较。
标签: python algorithm multidimensional-array data-structures