Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เขียนโปรแกรมในภาษา Java เพื่อหมุนเมทริกซ์ 90 องศาในทิศทางทวนเข็มนาฬิกา


สมมุติว่าเราให้เมทริกซ์กำลังสองของ N×N งานคือการหมุนเมทริกซ์ทวนเข็มนาฬิกา ตัวอย่างเช่น

อินพุต-1

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

ผลผลิต

3 6 9 2 5 8 1 4 7


คำอธิบาย :หลังจากหมุนเมทริกซ์ทวนเข็มนาฬิกา มันจะสร้างผลลัพธ์เป็น 3 6 9 2 5 8 1 4 7.

แนวทางการแก้ปัญหานี้

ในขั้นต้น แนวคิดคือการหาทรานสโพสของเมทริกซ์ที่กำหนด จากนั้นสลับแต่ละองค์ประกอบของเมทริกซ์ในขณะที่เคลื่อนที่ไปตามแถว

  • รับอินพุตของเมทริกซ์สี่เหลี่ยมจัตุรัส

  • หาทรานสโพสของเมทริกซ์

  • สลับองค์ประกอบที่ดัชนี 0 ด้วยดัชนี n-1

  • ส่งคืนผลลัพธ์

ตัวอย่าง

import java.io.*;
class Solution {
   static void rotateMatrix(
      int n, int matrix[][]){
         for (int i = 0; i < n; i++) {
            for (int j = i; j < n; j++) {
               int temp= matrix[i][j];
               matrix[i][j]= matrix[j][i];
               matrix[j][i]= temp;
            }
         }
   for(int i=0;i<n;i++){
      int top=0;
      int bottom = n-1;
      while(top<bottom){
         int temp = matrix[top][i];
         matrix[top][i]=matrix[bottom][i];
         matrix[bottom][i] = temp;
         top++;
         bottom--;
      }
   }
}
static void displayMatrix(int N, int mat[][]){
   for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++)
         System.out.print(" " + mat[i][j]);
         System.out.print("\n");
      }
      System.out.print("\n");
   }
   public static void main(String[] args){
      int N = 3;
      int mat[][] = {
         {1,2,3},
         {4,5,6},
         {7,8,9}
      };
      rotateMatrix(N, mat);
      displayMatrix(N, mat);
   }
}

ผลลัพธ์

การเรียกใช้โค้ดด้านบนจะสร้างผลลัพธ์เป็น

3 6 9 2 5 8 1 4 7