給你一幅由 n × n 矩陣表示的影象,其中每個畫素的大小為 4 位元組。請你設計一種演算法,將影象旋轉 90 度。
不占用額外記憶體空間能否做到?
示例 1:
給定 matrix =
[[1,2,3],
[4,5,6],
[7,8,9]
],原地旋轉輸入矩陣,使其變為:
[[7,4,1],
[8,5,2],
[9,6,3]
]
示例 2:
給定 matrix =
[[ 5, 1, 9,11],
[ 2, 4, 8,10],
[13, 3, 6, 7],
[15,14,12,16]
], 原地旋轉輸入矩陣,使其變為:
[[15,13, 2, 5],
[14, 3, 4, 1],
[12, 6, 8, 9],
[16, 7,10,11]
]
其實上來看到說不使用額外的記憶體空間,我第一反應是位運算,哈哈,後來發現想多了,因為每個數字佔據4個位元組,int型別也就4個位元組,已經佔滿了。
所以根據我們的知識儲備,swap這種交換操作,認為是o(1)的空間,所以屬於沒有占用額外的空間。我們根據旋轉矩陣的基礎知識。採用先沿著左上到右下的對角線翻轉,再左右翻轉就能得到順時針旋轉90度的矩陣啦。
時間複雜度:o(n^2)
空間複雜度:o(1)
//左右翻轉
mid := n>>
1for i:=
0;i}}
本題用到了學習矩陣的一些基礎知識,適時回顧一下。
leetCode48 旋轉矩陣
目錄 一 題目描述 二 解題思路 三 實現 給定乙個 n n 的二維矩陣表示乙個影象。將影象順時針旋轉 90 度。說明 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另乙個矩陣來旋轉影象。示例 1 給定 matrix 1,2,3 4,5,6 7,8,9 原地旋轉輸入矩陣,使其...
leetcode 21 旋轉矩陣
給定乙個 n n 的二維矩陣表示乙個影象。將影象順時針旋轉 90 度。說明 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另乙個矩陣來旋轉影象。像剝洋蔥一樣,一圈一圈旋轉,每一圈,分為四個元素的置換。算出來四個座標就行 class solution def rotate se...
LeetCode0107 旋轉矩陣 對角變換
1 因為不能借助額外空間,所以考慮找規律找對換元素,通過不斷交換 2 通過提示得出,通過對角線交換和中心線為中心交換左右即可達到目的 3 注意對角線交換演算法 package com.leetcode1.array public class leet0107 int arr rotate arr p...