1. 程式人生 > >[LeetCode] 旋轉影象

[LeetCode] 旋轉影象

給定一個 × n 的二維矩陣表示一個影象。

將影象順時針旋轉 90 度。

說明:

你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。

示例 1:

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

原地旋轉輸入矩陣,使其變為:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

示例 2:

給定 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]
]

方法一:先在後面插入相應的數字,再刪除前面的部分:

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();//行
        int m = matrix[0].size();//列
        
      for(int i = n - 1; i >= 0; i--){
          for(int j = 0; j < m ; j++){
              matrix[j].push_back(matrix[i][j]);
          }
      }
        
        for(int i = 0;i < n;i++){
            matrix[i].erase(matrix[i].begin(),matrix[i].begin() + n);
        }
    }
};

方法二:先調換對角元素,再調換每列元素就能拿到該二維陣列旋轉後的結果了。

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();//行
        
        //調換對角元素
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n - i;j++){
                int tmp = matrix[i][j];
                matrix[i][j] = matrix[n - j - 1][n - i - 1];
                matrix[n - j - 1][n - i - 1] = tmp;
            }
        }
         // 調換列元素
        for (int i = 0; i < n; i++) {
          for (int j = 0; j < n / 2; j++) {
             int tmp = matrix[j][i];
             matrix[j][i] = matrix[n - j - 1][i];
             matrix[n - j - 1][i] = tmp;
         }
      }
    }
};

相關推薦

Leetcode 旋轉影象(c++)

給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4,5,6], [7,8,9

[LeetCode] 旋轉影象

給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4,5,6],

Leetcode——旋轉影象——python3

# 旋轉影象 # 給定一個 n × n 的二維矩陣表示一個影象,將影象順時針旋轉 90 度。 # 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 class Solution(object): def rotate(se

LeetCode】48. 旋轉影象

題目連結:https://leetcode-cn.com/problems/rotate-image/description/ 題目描述 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入

swift 旋轉影象 LeetCode

給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 class Solution { func rotate

LeetCode題目--旋轉影象(python實現)

題目 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix =

leetcode題庫——旋轉影象

題目描述: 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [

Leetcode篇:旋轉影象

@author: ZZQ @software: PyCharm @file: rotate.py @time: 2018/11/16 15:41 要求:給定一個 n × n 的二維矩陣表示一個影象。將影象順時針旋轉 90 度。 說明:你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另

C++ Leetcode初級演算法之旋轉影象

給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4,5,6], [7,8,9]

LeetCode : 48. 旋轉影象(Rotate Image)解答

48. 旋轉影象 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在 原地 旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [  

leetcode 48:旋轉影象

先對角線的對換  然後列對換 void rotate(std::vector<std::vector<int>>& matrix) { int num=matrix.size()-1; int temp=0; for(int

Leetcode演算法Java全解答--48.旋轉影象(Rotate Image)

Leetcode演算法Java全解答–48.旋轉影象(Rotate Image) 文章目錄 Leetcode演算法Java全解答--48.旋轉影象(Rotate Image) 題目 想法 結果 總結 程式碼

leetcode刷題--基礎陣列--旋轉影象(C)

給定一個 n × n 的二維矩陣表示一個影象,將影象順時針旋轉 90 度。 說明:你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [ 5, 1, 9,11], [ 2, 4,

Leetcode 48:旋轉影象(最詳細的解法!!!)

給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 ma

旋轉影象-leetcode

方法一: 先將矩陣轉化為轉置矩陣然後再將每一行反轉就可得到矩陣選轉九十度之後的矩陣 class Solution { public:     void rotate(vector<vector<int>>& matrix) {        

leetcode】#陣列【Python】48. Rotate Image 旋轉影象

連結: 題目: 給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示

leetcode-48 旋轉影象

給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 : 給定 matrix = [ [1,2,3], [4,5,6],

LeetCode 48.旋轉影象(C++)

給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1:

旋轉影象(二維陣列的旋轉)——LeetCode陣列演算法題

給定一個 n × n 的二維矩陣表示一個影象。將影象順時針旋轉 90 度。說明:你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。示例 1:給定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋轉輸入矩陣,使其變為

LeetCode演算法題48:旋轉影象解析

給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4,5,6], [