目录
频道首页
算法进修——力扣0048 旋转图像
收藏
0
Aubyn 最近修改于 2023-11-13 02:49:32

旋转图像

难度:中等

题目描述

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。**请不要 **使用另一个矩阵来旋转图像。

示例1

::: left image :::

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8,5,2],[9,6,3]]

示例2

::: left image ::: 输入: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--;
        }
    }
}
内容大纲
批注笔记
算法进修——力扣0048 旋转图像
ArticleBot
z
z
z
z
主页
会议室
Git管理
文章
云文档
看板