文章目錄
- 一、題目
- 二、代碼
- 三、總結
一、題目
給定一個 n × n 的二維矩陣 matrix 表示一個影像,請你將影像順時針旋轉 90 度,
你必須在 原地 旋轉影像,這意味著你需要直接修改輸入的二維矩陣,請不要 使用另一個矩陣來旋轉影像,

決議:
該題可以利用規律解決
比如翻轉后:7放到1,9放到7,3放到9,1放到3;4放到2,8放到4,6放到8,2放到6;

關鍵在于每一輪陣列下標的對應,具體可以參考代碼
二、代碼
class Solution {
public void rotate(int[][] matrix) {
int len = matrix.length;
//控制一共幾層回圈,每次回圈替換一輪4個
//比如一共3行那么回圈一趟就可以了
for(int i=0;i<len/2;i++){
//每輪回圈替換4個
for(int j=i;j<len-i-1;j++){
int temp = matrix[len-1-j][i];
matrix[len-1-j][i] = matrix[len-1-i][len-1-j];
matrix[len-1-i][len-1-j] = matrix[j][len-1-i];
matrix[j][len-1-i] = matrix[i][j];
matrix[i][j] = temp;
}
}
}
}
public class Test {
public static void main(String[] args) {
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int len = matrix.length;
for (int i = 0; i < len / 2; i++) {
for (int j = 0; j < len - 2; j++) {
int temp = matrix[len - 1 - j][i];
matrix[len - 1 - j][i] = matrix[len - 1 - i][len - 1 - j];
matrix[len - 1 - i][len - 1 - j] = matrix[j][len - 1 - j];
matrix[j][len - 1 - j] = matrix[i][j];
matrix[i][j] = temp;
}
}
System.out.println();
}
}
三、總結
該題關鍵在于發現規律,同時注意每輪旋轉坐標的選擇,
CSDN認證博客專家
深度學習
Java
Python
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/258168.html
標籤:java
上一篇:C/C++編程筆記:如何在C++中的類內創建動態2D陣列?
下一篇:Java中Map.Entry詳解
