<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 將矩陣旋轉 180 度 > 原文: [https://www.geeksforgeeks.org/rotate-matrix-180-degree/](https://www.geeksforgeeks.org/rotate-matrix-180-degree/) 給定一個正方形矩陣,任務是我們在不使用任何額外空間的情況下將其沿逆時針方向旋轉 180 度。 **示例**: ``` Input : 1 2 3 4 5 6 7 8 9 Output : 9 8 7 6 5 4 3 2 1 Input : 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 Output : 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 ``` **方法:1(僅打印旋轉的矩陣)** 此問題的解決方案是將矩陣旋轉 180 度,我們可以輕松地執行此步驟 ``` Matrix = a00 a01 a02 a10 a11 a12 a20 a21 a22 when we rotate it by 90 degree then matrix is Matrix = a02 a12 a22 a01 a11 a21 a00 a10 a20 when we rotate it by again 90 degree then matrix is Matrix = a22 a21 a20 a12 a11 a10 a02 a01 a00 ``` **從上面的插圖中我們可以簡單地將矩陣旋轉 180 度,然后必須以相反的方式打印給定的矩陣。** ## C++ ```cpp // C++ program to rotate a matrix by 180 degrees #include <bits/stdc++.h> #define N 3 using namespace std; // Function to Rotate the matrix by 180 degree void rotateMatrix(int mat[][N]) { ????// Simply print from last cell to first cell. ????for (int i = N - 1; i >= 0; i--) { ????????for (int j = N - 1; j >= 0; j--) ????????????printf("%d ", mat[i][j]); ????????printf("\n"); ????} } // Driven code int main() { ????int mat[N][N] = { ????????{ 1, 2, 3 }, ????????{ 4, 5, 6 }, ????????{ 7, 8, 9 } ????}; ????rotateMatrix(mat); ????return 0; } ``` ## Java ```java // Java program to rotate a // matrix by 180 degrees import java.util.*; class GFG { ????static int N = 3; ????// Function to Rotate the ????// matrix by 180 degree ????static void rotateMatrix(int mat[][]) ????{ ????????// Simply print from last ????????// cell to first cell. ????????for (int i = N - 1; i >= 0; i--) { ????????????for (int j = N - 1; j >= 0; j--) ????????????????System.out.print(mat[i][j] + " "); ????????????System.out.println(); ????????} ????} ????// Driver Code ????public static void main(String[] args) ????{ ????????int[][] mat = { { 1, 2, 3 }, ????????????????????????{ 4, 5, 6 }, ????????????????????????{ 7, 8, 9 } }; ????????rotateMatrix(mat); ????} } // This code is contributed by ChitraNayal ``` ## Python3 ```py # Python3 program to? # rotate a matrix by? # 180 degrees N = 3; # Function to Rotate? # the matrix by 180 degree def rotateMatrix(mat): ????# Simply print from ????# last cell to first cell. ????i = N - 1;? ????while(i >= 0): ????????j = N - 1; ????????while(j >= 0): ????????????print(mat[i][j], end = " "); ????????????j = j - 1; ????????print(); ????????i = i - 1; # Driven code mat = [[1, 2, 3], ???????[ 4, 5, 6 ], ???????[ 7, 8, 9 ]]; rotateMatrix(mat); # This code is contributed? # by mits ``` ## C# ```cs // C# program to rotate a // matrix by 180 degrees using System; class GFG { ????static int N = 3; ????// Function to Rotate the ????// matrix by 180 degree ????static void rotateMatrix(int[, ] mat) ????{ ????????// Simply print from last ????????// cell to first cell. ????????for (int i = N - 1; i >= 0; i--) { ????????????for (int j = N - 1; j >= 0; j--) ????????????????Console.Write(mat[i, j] + " "); ????????????Console.WriteLine(); ????????} ????} ????// Driver Code ????static public void Main() ????{ ????????int[, ] mat = { { 1, 2, 3 }, ????????????????????????{ 4, 5, 6 }, ????????????????????????{ 7, 8, 9 } }; ????????rotateMatrix(mat); ????} } // This code is contributed by aj_36 ``` ## PHP ```php <?php // PHP program to rotate? // a matrix by 180 degree $N = 3; // Function to Rotate the // matrix by 180 degree function rotateMatrix($mat) { ????global $N; ????// Simply print from? ????// last cell to first cell. ????for ($i = $N - 1; $i >= 0; $i--)? ????{ ????????for ($j = $N - 1; $j >= 0; $j--)? ????????????echo $mat[$i][$j], " "; ????echo "\n"; ????} } // Driver Code $mat = array(array(1, 2, 3), ?????????????array(4, 5, 6), ?????????????array(7, 8, 9)); rotateMatrix($mat); // This code is contributed by ajit ?> ``` **輸出**: ``` 9 8 7 6 5 4 3 2 1 ``` **時間復雜度**: O(N * N) **輔助空間**:`O(1)` **方法:2(原位旋轉)** 有四個步驟: 1-查找矩陣的轉置。 2-轉置的反向列。 3-查找矩陣的轉置。 4-轉置的反向列 ``` Let the given matrix be 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 First we find transpose. 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 Then we reverse elements of every column. 4 8 12 16 3 7 11 15 2 6 10 14 1 5 9 13 then transpose again 4 3 2 1 8 7 6 5 12 11 10 9 16 15 14 13 Then we reverse elements of every column again 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ``` ## C++ ``` // C++ program for left rotation of matrix by 180 #include <bits/stdc++.h> using namespace std; #define R 4 #define C 4 // Function to rotate the matrix by 180 degree void reverseColumns(int arr[R][C]) { ????for (int i = 0; i < C; i++) ????????for (int j = 0, k = C - 1; j < k; j++, k--) ????????????swap(arr[j][i], arr[k][i]); } // Function for transpose of matrix void transpose(int arr[R][C]) { ????for (int i = 0; i < R; i++) ????????for (int j = i; j < C; j++) ????????????swap(arr[i][j], arr[j][i]); } // Function for display the matrix void printMatrix(int arr[R][C]) { ????for (int i = 0; i < R; i++) { ????????for (int j = 0; j < C; j++) ????????????cout << arr[i][j] << " "; ????????cout << '\n'; ????} } // Function to anticlockwise rotate matrix // by 180 degree void rotate180(int arr[R][C]) { ????transpose(arr); ????reverseColumns(arr); ????transpose(arr); ????reverseColumns(arr); } // Driven code int main() { ????int arr[R][C] = { { 1, 2, 3, 4 }, ??????????????????????{ 5, 6, 7, 8 }, ??????????????????????{ 9, 10, 11, 12 }, ??????????????????????{ 13, 14, 15, 16 } }; ????rotate180(arr); ????printMatrix(arr); ????return 0; } ``` ## Java ```java // Java program for left // rotation of matrix by 180 import java.util.*; class GFG { ????static int R = 4, C = 4, t = 0; ????// Function to rotate the ????// matrix by 180 degree ????static void reverseColumns(int arr[][]) ????{ ????????for (int i = 0; i < C; i++) { ????????????for (int j = 0, k = C - 1; j < k; j++, k--) { ????????????????t = arr[j][i]; ????????????????arr[j][i] = arr[k][i]; ????????????????arr[k][i] = t; ????????????} ????????} ????} ????// Function for transpose of matrix ????static void transpose(int arr[][]) ????{ ????????for (int i = 0; i < R; i++) { ????????????for (int j = i; j < C; j++) { ????????????????t = arr[i][j]; ????????????????arr[i][j] = arr[j][i]; ????????????????arr[j][i] = t; ????????????} ????????} ????} ????// Function for display the matrix ????static void printMatrix(int arr[][]) ????{ ????????for (int i = 0; i < R; i++) { ????????????for (int j = 0; j < C; j++) ????????????????System.out.print(arr[i][j] + " "); ????????????System.out.println(); ????????} ????} ????// Function to anticlockwise ????// rotate matrix by 180 degree ????static void rotate180(int arr[][]) ????{ ????????transpose(arr); ????????reverseColumns(arr); ????????transpose(arr); ????????reverseColumns(arr); ????} ????// Driver Code ????public static void main(String[] args) ????{ ????????int[][] arr = { { 1, 2, 3, 4 }, ????????????????????????{ 5, 6, 7, 8 }, ????????????????????????{ 9, 10, 11, 12 }, ????????????????????????{ 13, 14, 15, 16 } }; ????????rotate180(arr); ????????printMatrix(arr); ????} } // This code is contributed by ChitraNayal ``` ## C# ``` // C# program for left // rotation of matrix by 180 using System; class GFG { ????static int R = 4, C = 4, t = 0; ????// Function to rotate the ????// matrix by 180 degree ????static void reverseColumns(int[, ] arr) ????{ ????????for (int i = 0; i < C; i++) { ????????????for (int j = 0, k = C - 1; ?????????????????j < k; j++, k--) { ????????????????t = arr[j, i]; ????????????????arr[j, i] = arr[k, i]; ????????????????arr[k, i] = t; ????????????} ????????} ????} ????// Function for transpose of matrix ????static void transpose(int[, ] arr) ????{ ????????for (int i = 0; i < R; i++) { ????????????for (int j = i; j < C; j++) { ????????????????t = arr[i, j]; ????????????????arr[i, j] = arr[j, i]; ????????????????arr[j, i] = t; ????????????} ????????} ????} ????// Function for display the matrix ????static void printMatrix(int[, ] arr) ????{ ????????for (int i = 0; i < R; i++) { ????????????for (int j = 0; j < C; j++) ????????????????Console.Write(arr[i, j] + " "); ????????????Console.WriteLine(); ????????} ????} ????// Function to anticlockwise ????// rotate matrix by 180 degree ????static void rotate180(int[, ] arr) ????{ ????????transpose(arr); ????????reverseColumns(arr); ????????transpose(arr); ????????reverseColumns(arr); ????} ????// Driver Code ????static public void Main() ????{ ????????int[, ] arr = { { 1, 2, 3, 4 }, ????????????????????????{ 5, 6, 7, 8 }, ????????????????????????{ 9, 10, 11, 12 }, ????????????????????????{ 13, 14, 15, 16 } }; ????????rotate180(arr); ????????printMatrix(arr); ????} } // This code is contributed by ajit ``` ## Python 3 ``` # Python 3 program for left rotation of matrix by 180 R = 4 C = 4 # Function to rotate the matrix by 180 degree def reverseColumns(arr): ????for i in range(C): ????????j = 0 ????????k = C-1 ????????while j < k: ????????????t = arr[j][i] ????????????arr[j][i] = arr[k][i] ????????????arr[k][i] = t ????????????j += 1 ????????????k -= 1 # Function for transpose of matrix def transpose(arr): ????for i in range(R): ????????for j in range(i, C): ????????????t = arr[i][j] ????????????arr[i][j] = arr[j][i] ????????????arr[j][i] = t # Function for display the matrix def printMatrix(arr): ????for i in range(R): ????????for j in range(C): ????????????print(arr[i][j], end = " "); ????????print(); # Function to anticlockwise rotate matrix # by 180 degree def rotate180(arr): ????transpose(arr); ????reverseColumns(arr); ????transpose(arr); ????reverseColumns(arr); # Driven code arr = [ [ 1, 2, 3, 4 ], ????????[ 5, 6, 7, 8 ], ????????[9, 10, 11, 12 ], ????????[13, 14, 15, 16 ] ]; rotate180(arr); printMatrix(arr); ``` ## PHP ```php <?php // PHP program for left rotation of matrix by 180 $R = 4; $C = 4; // Function to rotate the matrix by 180 degree function reverseColumns(&$arr) { ????global $C; ????for ($i = 0; $i < $C; $i++) ????{ ????????for ($j = 0, $k = $C - 1; $j < $k; $j++, $k--) ????????{ ??????????????$t = $arr[$j][$i]; ??????????????$arr[$j][$i] = $arr[$k][$i]; ??????????????$arr[$k][$i] = $t; ????????} ????}???? } // Function for transpose of matrix function transpose(&$arr) { ????global $R, $C; ????for ($i = 0; $i < $R; $i++) ????{ ????????for ($j = $i; $j < $C; $j++) ????????{ ????????????$t = $arr[$i][$j]; ????????????$arr[$i][$j] = $arr[$j][$i]; ????????????$arr[$j][$i] = $t; ????????} ????} } // Function for display the matrix function printMatrix(&$arr) { ????global $R, $C; ????for ($i = 0; $i < $R; $i++) { ????????for ($j = 0; $j < $C; $j++) ????????{ ????????????echo $arr[$i][$j]." "; ????????} ????????echo "\n"; ????} } // Function to anticlockwise rotate matrix // by 180 degree function rotate180(&$arr) { ????transpose($arr); ????reverseColumns($arr); ????transpose($arr); ????reverseColumns($arr); } // Driven code $arr = array( array( 1, 2, 3, 4 ), ?????????????????array( 5, 6, 7, 8 ), ?????????????????array( 9, 10, 11, 12 ), ?????????????????array( 13, 14, 15, 16 ) ); rotate180($arr); printMatrix($arr); return 0; ?> ``` **輸出**: ``` 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ``` **時間復雜度**: O(R * C) **輔助空間**:`O(1)` 在上面的代碼中,矩陣的轉置必須被找到兩次,并且列必須被反轉兩次。 因此,我們可以有一個更好的解決方案。 **方法:3(位置交換)** 在這里,我們交換相應位置的值。 ## Java ```java public class GFG { ???????/** ?????* Reverse Row at specified index in the matrix ?????* @param data matrix ?????* @param index row index ?????*/ ????private static void reverseRow(int[][] data, int index) { ????????int cols = data[index].length; ????????for (int i = 0; i < cols / 2; i++) { ????????????int temp = data[index][i]; ????????????data[index][i] = data[index][cols - i - 1]; ????????????data[index][cols - i - 1] = temp; ????????} ????} ????/** ?????* Print Matrix data ?????* @param data matrix ?????*/ ????private static void printMatrix(int[][] data) { ????????for (int i = 0; i < data.length; i++) { ????????????for (int j = 0; j < data[i].length; j++) { ????????????????System.out.print(data[i][j] + " "); ????????????} ????????????System.out.println(""); ????????} ????} ????/** ?????* Rotate Matrix by 180 degrees ?????* @param data matrix ?????*/ ????private static void rotateMatrix180(int[][] data) { ????????int rows = data.length; ????????int cols = data[0].length; ????????if (rows % 2 != 0) { ????????????//If N is odd reverse the middle row in the matrix ????????????reverseRow(data, data.length / 2); ????????} ????????//Swap the value of matrix [i][j] with [rows - i - 1][cols - j - 1] for half the rows size.? ????????for (int i = 0; i <= (rows/2) - 1; i++) { ????????????for (int j = 0; j < cols; j++) { ????????????????int temp = data[i][j]; ????????????????data[i][j] = data[rows - i - 1][cols - j - 1]; ????????????????data[rows - i - 1][cols - j - 1] = temp; ????????????} ????????} ????} ????public static void main(String[] args) { ????????int[][] data = { ????????????????{1, 2, 3, 4, 5}, ????????????????{6, 7, 8, 9, 10}, ????????????????{11, 12, 13, 14, 15}, ????????????????{16, 17, 18, 19, 20}, ????????????????{21, 22, 23, 24, 25} ????????}; ????????//Rotate Matrix ????????rotateMatrix180(data); ????????//Print Matrix ????????printMatrix(data); ????} } ``` **輸出**: ``` 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ``` **Time complexity :** O(R*C) **Auxiliary Space :** O(1) * * * * * *
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看