建立英文网站,免费虚拟主机的好处,360免费wifi创建失败,免费的个人空间建网站解题思路#xff1a; \qquad 这道题同样需要用模拟解决#xff0c;原地算法要求空间复杂度尽量小#xff0c;最好为 O ( 1 ) O(1) O(1)。模拟的关键是找到旋转的内在规律#xff0c;即旋转前后的位置坐标的变化规律。 \qquad 正方形矩阵类似洋葱#xff0c;可以由不同大小… 解题思路 \qquad 这道题同样需要用模拟解决原地算法要求空间复杂度尽量小最好为 O ( 1 ) O(1) O(1)。模拟的关键是找到旋转的内在规律即旋转前后的位置坐标的变化规律。 \qquad 正方形矩阵类似洋葱可以由不同大小的正方形数字分层组合而成而旋转后的元素只在所在的那一层中进行位置变换且四次变换后可回到原位置若将元素四次变换经过的位置找出来把元素按照旋转顺序进行一次移动即可完成旋转。 \qquad 我们把一层正方形提取出来看定义正方形左上角的坐标为[i, i]正方形边长为n则正方形边界为m in-1边上任意位置元素[i, ij]经过一次旋转得到[ij, m]经过第二次旋转得到[m, m-j]继续旋转得[m-j, i]最后旋转又回到[i, ij]。将这四个位置上的元素按顺序移动即可完成旋转正方形一条边上所有的元素旋转完毕后进入下一层i1且n-2。当n 1时可以认为矩阵已经旋转完成。 void rotate(vectorvectorint matrix) {int n matrix.size();int i 0, temp 0;while(n 1){for(int j 0; j n-1; j){temp matrix[i][ij];matrix[i][ij] matrix[in-1-j][i];matrix[in-1-j][i] matrix[in-1][in-1-j];matrix[in-1][in-1-j] matrix[ij][in-1];matrix[ij][in-1] temp;}i;n - 2;}}