频道首页
目录
算法进修——力扣0048 旋转图像
收藏
0
旋转图像
难度:中等
题目描述
给定一个 n × n 的二维矩阵 matrix
表示一个图像。请你将图像顺时针旋转 90 度。
你必须在原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。**请不要 **使用另一个矩阵来旋转图像。
示例1
::: left :::
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8,5,2],[9,6,3]]
示例2
::: left ::: 输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]] 输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
题解
将最外圈进行旋转,左上转右上,以此类推,之后再旋转内圈即可
想法代码
public class Solution
{
public static void Main(string[] args)
{
Solution solution = new Solution();
int[][] matrix = new int[3][]
{
new int[] { 1, 2, 3 },
new int[] { 4, 5, 6 },
new int[] { 7, 8, 9 },
};
solution.Rotate(matrix);
foreach (var i in matrix)
{
foreach (var j in i)
{
Console.Write(j + " ");
}
Console.WriteLine();
}
}
public void Rotate(int[][] matrix)
{
if (matrix[0].Length == 1) return;
int r = 0, c = matrix.Length - 1;
for (int i = 0; i < matrix.Length / 2; i++)
{
for (int j = 0; j < (c - r); j++)
{
int temp = matrix[r][r + j];
matrix[r][r + j] = matrix[c - j][r];
matrix[c - j][r] = matrix[c][c - j];
matrix[c][c - j] = matrix[r + j][c];
matrix[r + j][c] = temp;
}
r++;
c--;
}
}
}
主页
会议室
Git管理
文章
云文档
看板