欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python一行代碼解決矩陣旋轉(zhuǎn)的問題

 更新時(shí)間:2019年11月30日 12:41:51   作者:Jason_Bourne_  
今天小編就為大家分享一篇Python一行代碼解決矩陣旋轉(zhuǎn)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

今天刷《劍指offer》的時(shí)候碰到這樣一道題:

輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數(shù)字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

思路:可以模擬魔方逆時(shí)針旋轉(zhuǎn)的方法,一直做取出第一行的操作,例如 :

1 2 3
4 5 6
7 8 9

利用pop輸出并且刪除第一行后,再進(jìn)行一次逆時(shí)針旋轉(zhuǎn),就變成:

6 9
5 8
4 7

然后,繼續(xù)重復(fù)上述操作即可。

最主要的在于實(shí)現(xiàn)矩陣的逆時(shí)針操作。關(guān)于矩陣的旋轉(zhuǎn)有好幾種,轉(zhuǎn)置、順時(shí)針、逆時(shí)針,下面直接上代碼,用一行python代碼實(shí)現(xiàn)這三種操作。

矩陣轉(zhuǎn)置:

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix = map(list, zip(*matrix))
print(matrix)
 
>>>[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

矩陣順時(shí)針旋轉(zhuǎn):先把矩陣上下翻轉(zhuǎn),然后在轉(zhuǎn)置一下

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix[:] = map(list,zip(*matrix[::-1]))
print(matrix)
 
>>>[[7, 4, 1], [8, 5, 2], [9, 6, 3]]

矩陣逆時(shí)針旋轉(zhuǎn):先把矩陣轉(zhuǎn)置一下,然后在上下翻轉(zhuǎn)

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix[:] = map(list,zip(*matrix))[::-1]
print(matrix)
 
>>>[[3, 6, 9], [2, 5, 8], [1, 4, 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
      # 將矩陣逆時(shí)針旋轉(zhuǎn)
      matrix[:] = map(list, zip(*matrix))[::-1]
    return result

以上這篇Python一行代碼解決矩陣旋轉(zhuǎn)的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論