[LeetCode48题旋转图像] | 刷题打卡

470 阅读3分钟

前言

本来今天想着一篇题解可以了,没想到大家都这么猛,所以趁着还在等发布再写一篇!😄

题目描述

48.旋转图像

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

示例 1:

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

示例 2:

输入: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]]

示例 3:

输入:matrix = [[1]]
输出:[[1]]

示例 4:

输入:matrix = [[1,2],[3,4]]
输出:[[3,1],[4,2]]

提示:

  • matrix.length == n
  • matrix[i].length == n
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

解题思路

刚看到题目的时候我没有思路,就是看完之后就感觉,然后就没有然后了,没有思路怎么办呢?

拿出小本本,用例题来找方法,找思路,就是各种乱试,其实我是不推荐这样的,主要是我是在是没有思路,就越看越困,所以就用这种方法。哪怕是错的,好歹能让我注意力集中上来。

第一步,如何能让17交换呢?翻转下数组。

这个时候matrix如下:

[
	[7, 8, 9],
    [4, 5, 6],
    [1, 2, 3]
]

嗯,完成了第一步想要的结果,然后呢?4和81和9怎么交换呢?

尝试下位置交换,然后结果就出来了。。。

点击提交。

解题代码

var rotate = function(matrix) {
    matrix.reverse();
    for (let i = 0; i < matrix.length; i++) {
        for (let j = 0; j < i; j++) {
            [matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]]
        }
    }
    return matrix;
};

刷题打卡记录

这里是之前的刷题打卡记录,大家有兴趣的可以看下,如果有什么不同的见解和看法或者觉得有什么错误的,欢迎在评论区留言!🙏🙏🙏

[LeetCode0303题区域和检索 - 数组不可变] | 刷题打卡

[LeetCode1200. 最小绝对差] | 刷题打卡

[LeetCode0304题二维区域和检索 - 矩阵不可变] | 刷题打卡

[LeetCode11题盛最多水的容器] | 刷题打卡

[LeetCode0338题比特位计数] | 刷题打卡

[LeetCode209题长度最小的子数组] | 刷题打卡

[LeetCode236题二叉树的最近公共祖先] | 刷题打卡

[LeetCode141题环形链表] | 刷题打卡

[LeetCode53题最大子序和] | 刷题打卡

总结

多写写题解还是很有必要的,不要怕写的不好,写的过程就是回顾的过程,更容易加深自己的理解。

加油!hxdm!!!💪💪💪

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情