翻滾吧,leetcode之旋轉矩陣

2021-10-04 19:57:42 字數 991 閱讀 2695

給你一幅由 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...