我想顺时针旋转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?
php没有像矩阵的“转置”这样的概念而没有添加某种线性代数库.
你可以通过遍历矩阵和交换一些索引来原生地完成它
你可以通过遍历矩阵和交换一些索引来原生地完成它
<?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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。