门户网站建设意见,龙岗中心城有学网站建设,官网型网站开发,wordpress zipposter力扣初级算法(旋转矩阵) 每日一算法#xff1a;旋转矩阵 学习内容#xff1a;
1.问题#xff1a;
给你一幅由 N N 矩阵表示的图像#xff0c;其中每个像素的大小为 4 字节。请你设计一种算法#xff0c;将图像旋转 90 度。 不占用额外内存空间能否做到#xff1f;
2.…力扣初级算法(旋转矩阵) 每日一算法旋转矩阵 学习内容
1.问题
给你一幅由 N × N 矩阵表示的图像其中每个像素的大小为 4 字节。请你设计一种算法将图像旋转 90 度。 不占用额外内存空间能否做到
2.示例
示例一
给定 matrix
[[1,2,3],[4,5,6],[7,8,9]
],原地旋转输入矩阵使其变为:
[[7,4,1],[8,5,2],[9,6,3]
]示例二
给定 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.旋转矩阵的解法
3.1自我总结(借鉴力扣大佬的思路)
如果是顺时针旋转90° 一定是先对角线翻转再水平翻转 如果是逆时针旋转90° 一定是先水平翻转再对角线翻转
为了方便大家理解我给大家画了张图
3.2 代码实现
class Solution {public void rotate(int[][] matrix) {int length matrix.length;//先对角线翻转for(int i 0;ilength;i){for(int j i1;jlength;j){int temp matrix[i][j];matrix[i][j] matrix[j][i];matrix[j][i] temp;}}//再水平翻转for (int i 0; ilength;i){for (int j 0;jlength;j){if (jlength-j-1) {int temp matrix[i][j];matrix[i][j] matrix[i][length - j - 1];matrix[i][length - j - 1] temp;}}}}
}这段代码执行完
方法二这里借鉴的大佬的另外一个思路实现的
class Solution {public void rotate(int[][] matrix) {int length matrix.length;//先上下翻转for(int i 0;ilength/2;i){int[] a new int[length -1];a matrix[i];matrix[i] matrix[length - i -1];matrix[length - i -1] a;}//再对角线翻转for(int i 0;ilength;i){for(int j i1;jlength;j){int temp matrix[i][j];matrix[i][j] matrix[j][i];matrix[j][i] temp;}}}
}执行结果 学习时间
因为最近工作繁忙晚上回家竟然懈怠了惭愧惭愧大家一起加油学习力扣算法把
2023/08/10