CTCI在python中旋转矩阵(二维数组)

编码数据

我一直在研究破解编码面试,编码挑战之一是旋转矩阵

Input = [
[ 5, 1, 9,11],
[ 2, 4, 8,10],
[13, 3, 6, 7],
[15,14,12,16]]

Output = [
[15,13, 2, 5],
[14, 3, 4, 1],
[12, 6, 8, 9],
[16, 7,10,11]]

我了解解决方案的第一部分

def rotateMatrix(matrix):
    # Transpose the Matrix
    for i in range(len(matrix)):
        for j in range(i + 1, len(matrix)):
            # Switch the row and column indices
            matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]


我不明白的是解决方案的最后一部分:看起来嵌套的 for 循环正在执行某种交换,就像上面的嵌套循环所做的那样,但是我感到困惑的是“range(len(matrix[r]/ /2)" 然后是 " oppI = len(matrix[r]) - 1 - i. 有没有人可以帮助阐明这些代码行的具体工作方式?我主要在熊猫工作,真的需要了解更多“有机” python 所以任何帮助将不胜感激!

    # Reverse every row
    for r in range(len(matrix)): 
        for i in range(len(matrix[r]) // 2):
            # oppI is the opposing index to i
            oppI = len(matrix[r]) - 1 - i
            print(oppI)
            matrix[r][i], matrix[r][oppI] = matrix[r][oppI], matrix[r][i]
            

轮回62

在第二部分,您只是反转矩阵的行。

它用于range(len(matrix[r]//2)将列表行的前半部分反转到后半部分。

它与(转置后)相同

new_matrix = [i[::-1] for i in matrix]

这里的矩阵是转置矩阵

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章