给你一幅由 N × N
矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。
示例如下:
5 1 9 11
1 2 3 2 4 8 10
4 5 6 13 3 6 7
7 8 9 15 14 12 16
↓ ↓
7 4 1 15 13 2 5
8 5 2 14 3 4 1
9 6 3 12 6 8 9
16 7 10 11
矩阵按顺时针旋转,PHP代码如下:
class Solution
{
function rotate(&$matrix)
{
$len = count($matrix);
for ($i=0; $i < $len/2; $i++) {
for ($j=$i; $j < $len-$i-1; $j++) {
$tmp = $matrix[$i][$j];
$matrix[$i][$j] = $matrix[$len-$j-1][$i];
$matrix[$len-$j-1][$i] = $matrix[$len-$i-1][$len-$j-1];
$matrix[$len-$i-1][$len-$j-1] = $matrix[$j][$len-$i-1];
$matrix[$j][$len-$i-1] = $tmp;
}
}
}
}
$matrix = [[1,2,3],[4,5,6],[7,8,9]];
$Solution = new Solution();
$Solution->rotate($matrix);
每层四个数顺时针替换,顺序别乱。GO代码如下:
func rotate(matrix [][]uint32) [][]uint32 {
var len int = len(matrix)
for i := 0; i < len / 2; i++ {
for j := 0; j < len - i -1; j++ {
var temp uint32 = matrix[i][j]
matrix[i][j] = matrix[len-j-1][i]
matrix[len-j-1][i] = matrix[len-i-1][len-j-1]
matrix[len-i-1][len-j-1] = matrix[j][len-i-1]
matrix[j][len-i-1] = temp
}
}
return matrix
}