网站建设主要包括哪两个方面,iis网站发布默认首页,云服务器搭建wordpress,深圳网站制作建设服务公司一、题目概述 二、思路方向 要在原地顺时针旋转一个 n x n 的二维矩阵 90 度#xff0c;你可以通过一系列交换操作来实现。这里的关键在于理解旋转后的矩阵与原矩阵之间的元素对应关系。 假设原矩阵为 matrix#xff0c;其中 matrix[i][j] 表示第 i 行第 j 列的元素。旋转 90…一、题目概述 二、思路方向 要在原地顺时针旋转一个 n x n 的二维矩阵 90 度你可以通过一系列交换操作来实现。这里的关键在于理解旋转后的矩阵与原矩阵之间的元素对应关系。 假设原矩阵为 matrix其中 matrix[i][j] 表示第 i 行第 j 列的元素。旋转 90 度后matrix[i][j] 的新位置变为 matrix[j][n-1-i]。 由于要原地旋转我们不能直接按这个关系来赋值因为这会导致原始数据丢失。相反我们可以使用一种“层”的概念从外向内逐层交换元素。每一层包含四个边两个行边和两个列边我们按顺时针方向交换这四个边上的元素。 三、代码实现
public class Solution { public void rotate(int[][] matrix) { int n matrix.length; // 先沿对角线翻转矩阵 for (int i 0; i n; i) { for (int j i; j n; j) { int temp matrix[i][j]; matrix[i][j] matrix[j][i]; matrix[j][i] temp; } } // 然后反转每一行 for (int i 0; i n; i) { int left 0, right n - 1; while (left right) { int temp matrix[i][left]; matrix[i][left] matrix[i][right]; matrix[i][right] temp; left; right--; } } }
}
执行结果 四、小结 这个解决方案首先将矩阵沿对角线翻转即交换 matrix[i][j] 和 matrix[j][i]然后反转每一行。这两步操作结合起来就实现了矩阵的顺时针 90 度旋转。 这种方法的时间复杂度是 O(n^2)其中 n 是矩阵的边长因为我们需要访问矩阵中的每个元素两次一次是对角线翻转一次是行反转。空间复杂度是 O(1)因为我们是在原地修改矩阵没有使用额外的空间除了几个用于交换的临时变量。 结语 在这喧嚣的世界里 找到一片属于自己的宁静之地 让心灵得以栖息