给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100
<?php
function rotateMatrix($arr) {
$result = [];
$x = 0;
$y = 0;
$right = count($arr[0])-1;
$down = count($arr)-1;
while (true) {
for ($i = $x; $i <= $right; ++$i) {
$result[] = $arr[$y][$i];
}
$y++;
if ($y > $down) break;
for ($i = $y; $i <= $down; ++$i) {
$result[] = $arr[$i][$right];
}
$right--;
if ($x > $right) break;
for ($i = $right; $i >= $x; --$i) {
$result[] = $arr[$down][$i];
}
$down--;
if ($y > $down) break;
for ($i = $down; $i >= $y; --$i) {
$result[] = $arr[$i][$x];
}
$x++;
if ($x > $right) break;
}
return $result;
}
dump(rotateMatrix([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]));
function dump($arr) {
echo "<pre>";
print_r($arr);
echo "</pre>";
}