前言
本来今天想着一篇题解可以了,没想到大家都这么猛,所以趁着还在等发布再写一篇!😄
题目描述
给定一个 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
解题思路
刚看到题目的时候我没有思路,就是看完之后就感觉哦,然后就没有然后了,没有思路怎么办呢?
拿出小本本,用例题来找方法,找思路,就是各种乱试,其实我是不推荐这样的,主要是我是在是没有思路,就越看越困,所以就用这种方法。哪怕是错的,好歹能让我注意力集中上来。
第一步,如何能让1和7交换呢?翻转下数组。
这个时候matrix如下:
[
[7, 8, 9],
[4, 5, 6],
[1, 2, 3]
]
嗯,完成了第一步想要的结果,然后呢?4和8、1和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题区域和检索 - 数组不可变] | 刷题打卡
[LeetCode0304题二维区域和检索 - 矩阵不可变] | 刷题打卡
[LeetCode236题二叉树的最近公共祖先] | 刷题打卡
总结
多写写题解还是很有必要的,不要怕写的不好,写的过程就是回顾的过程,更容易加深自己的理解。
加油!hxdm!!!💪💪💪
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情