我想顺时针旋转90度矩阵.这相当于使输入中的第一列成为输出的第一行,输入的第二列成为输出的第二行,输入的第三列成为输出的第3行.请注意,列的底部=行的开头,因为旋转90度.
例如:
- $matrix= [[1,2,3]
- [4,5,6],[7,8,9]];
- rotate90degrees($matrix)= [[7,4,1],[8,2],[9,6,3]]
我所知道的是我首先转置矩阵,然后交换列以将矩阵旋转90度.怎么能将这个应用到PHP?
@H_403_7@@H_403_7@
PHP没有像矩阵的“转置”这样的概念而没有添加某种线性代数库.
你可以通过遍历矩阵和交换一些索引来原生地完成它
你可以通过遍历矩阵和交换一些索引来原生地完成它
@H_403_7@
- <?PHP
- function rotate90($mat) {
- $height = count($mat);
- $width = count($mat[0]);
- $mat90 = array();
- for ($i = 0; $i < $width; $i++) {
- for ($j = 0; $j < $height; $j++) {
- $mat90[$height - $i - 1][$j] = $mat[$height - $j - 1][$i];
- }
- }
- return $mat90;
- }
- $mat = [[1,3],[4,9]];
- print_r($mat);
- //123
- //456
- //789
- print_r(rotate90($mat));
- //741
- //852
- //963
- $mat = [[1,9],["a","b","c"]];
- print_r($mat);
- //123
- //456
- //789
- //abc
- print_r(rotate90($mat));
- //a741
- //b852
- //c963