要求:給乙個n×n的陣列,旋轉90度。
手動畫個醜圖:
image.png
簡單思路(順時針):
如圖四個紅框為乙個layer,每次旋轉乙個layer,layer的範圍是(0,len(nums)/2)
在第乙個layer迴圈中,要將四角的元素按一下順序旋轉(0,0)轉到(0,3)轉到(3,3)轉到(3,0)轉到(0,0)
如果直接按照這個順序,前乙個值會將後乙個值直接覆蓋掉,所以先用乙個臨時的tmp將首個元素存起來,然後按照
(3,0)轉到(0,0)
(3,3)轉到(3,0)
(0,3)轉到(3,3)
(0,0)轉到(0,3)
tmp轉到(0,0)
這樣的順序旋轉。
first是每個紅框中的第乙個元素,last為最後乙個。
offset記錄了當前旋轉到了紅框中的第幾個元素。
完整**:
def rotate(matrix):
n = len(matrix)
for laryer in range(0, n / 2):
first = laryer
last = n - 1 - laryer
for i in range(first, last):
offset = i - first
tmp = matrix[first][i]
# 左側一列移到頂部
matrix[first][i] = matrix[last - offset][first]
# 底部一行移到左側
matrix[last - offset][first] = matrix[last][last - offset]
# 右側一列移到底部
matrix[last][last - offset] = matrix[i][last]
# 頂部一行移到右側
matrix[i][last] = tmp
return matrix
矩陣(測試用例):
matrix = [[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]]
輸出:image.png
矩陣旋轉Python
主要實現兩種方式 1,2,3 0,0 0,1 0,2 0,3 0,4 0,5 length 6 max xy 5 4,5,6 1,0 1,1 1,2 1,3 1,4 1,5 7,8,9 2,0 2,1 2,2 2,3 2,4 2,5 3,0 3,1 3,2 3,3 3,4 3,5 4,0 4,1 4...
劍指offer 陣列的旋轉(1)Python實現
題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。考點 二分查詢 鏈結 一 鏈結二。分析 旋轉之後的陣列實際上可以劃分...
python實訓成果 python實訓第一天
實訓第一天總結 常量 常量也是變數,在python中大家都規定只要是大寫的變數都稱之為常量 使用者與程式互動 數字型別 整型int 浮點型 float 字串型別 列表型別 字典型別 在 內,都逗號隔開,可存放多個值,每個值以key value的形式儲存 存 dict1 取 print dict1 n...