提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录- 题目列表
- 【第1题】旋转图像
- 1.题目描述
- 2.解题思路
- 3.代码详解
题目列表 【第1题】旋转图像
LeetCode地址:https://leetcode.cn/problems/rotate-image/
1.题目描述 2.解题思路方法一:模拟
对每一圈进行旋转:画图找到旋转的对应公式,注意每一圈旋转中的不变索引量(行、列号)
方法二:
先对矩阵进行水平旋转,接着再按对角线进行一次旋转(熟悉一下对角线旋转的写法)
//方法一:模拟
class Solution {
public void rotate(int[][] matrix) {
int mLen = matrix[0].length - 1;
for(int i = 0; i < (matrix[0].length / 2); i++){ // 控制圈数
int end = mLen - i - 1; //右边界
//控制元素个数
for(int j = i; j <= end; j++){
System.out.println(j);
int temp = matrix[i][j]; //暂存
//开始旋转
matrix[i][j] = matrix[mLen-j][i];
matrix[mLen-j][i] = matrix[mLen - i][mLen - j];
matrix[mLen - i][mLen - j] = matrix[j][mLen-i];
matrix[j][mLen-i] = temp;
}
}
}
}
//方法二
class Solution {
public void rotate(int[][] matrix) {
int mLen = matrix[0].length - 1;//用于索引~!!!!
//水平旋转
for(int i = 0; i <= mLen; i++){ // 列
for(int j = 0; j < (mLen+1) / 2; j++){ //行
int temp = matrix[j][i];
matrix[j][i] = matrix[mLen - j][i];
matrix[mLen - j][i] = temp;
}
}
//按对角线旋转
for(int i = 0 ; i <= mLen; i++){
for(int j = i; j <= mLen; j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
}



