Python一行程式碼解決矩陣旋轉的問題
阿新 • • 發佈:2020-01-09
今天刷《劍指offer》的時候碰到這樣一道題:
輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
思路:可以模擬魔方逆時針旋轉的方法,一直做取出第一行的操作,例如 :
1 2 3 4 5 6 7 8 9
利用pop輸出並且刪除第一行後,再進行一次逆時針旋轉,就變成:
6 9 5 8 4 7
然後,繼續重複上述操作即可。
最主要的在於實現矩陣的逆時針操作。關於矩陣的旋轉有好幾種,轉置、順時針、逆時針,下面直接上程式碼,用一行python程式碼實現這三種操作。
矩陣轉置:
matrix = [[1,3],[4,6],[7,9]] matrix = map(list,zip(*matrix)) print(matrix) >>>[[1,7],[2,8],[3,9]]
矩陣順時針旋轉:先把矩陣上下翻轉,然後在轉置一下
matrix = [[1,9]] matrix[:] = map(list,zip(*matrix[::-1])) print(matrix) >>>[[7,1],[8,2],[9,3]]
矩陣逆時針旋轉:先把矩陣轉置一下,然後在上下翻轉
matrix = [[1,zip(*matrix))[::-1] print(matrix) >>>[[3,9],[1,7]]
下面是完整的解題程式碼:
# -*- coding:utf-8 -*- class Solution: # matrix型別為二維列表,需要返回列表 def printMatrix(self,matrix): # write code here result = [] while(matrix): result += matrix.pop(0) if not matrix or not matrix[0]: break # 將矩陣逆時針旋轉 matrix[:] = map(list,zip(*matrix))[::-1] return result
以上這篇Python一行程式碼解決矩陣旋轉的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。