LeetCode每日一題 面試題 01.07. 旋轉矩陣

寫在前面: 題目似曾相識,吐槽一下:突然JS二維數組構建和賦值有點不習慣

思路:

  • 一個非常簡單的規律,我們觀察可以發現,當順序針旋轉90度時,
  • 假設向量長度爲N,旋轉之後座標變化是 matrix[i][j]—>matrix[j][N-i-1]

另外歡迎訪問我的 力扣github倉庫,有JavaScript和C++兩個版本,每日更新

C++代碼:

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int N=matrix.size();
        vector<vector<int>> temp(N);    //定義一個二維向量並申請空間
        for(int i=0;i<N;i++)
            temp[i].resize(N);  //這裏要初始化,否則會報錯
        temp=matrix;    //直接把matrix賦值給temp
        for(int i=0;i<N;i++){
            for(int j=0;j<N;j++){
                matrix[j][N-i-1]=temp[i][j];
            }
        } 
    }
};

JS代碼:

/**
 * @param {number[][]} matrix
 * @return {void} Do not return anything, modify matrix in-place instead.
 */
var rotate = function(matrix) {
    var N = matrix.length;
    var temp = new Array();
    for (var i = 0; i < N; i++){
        temp[i] = new Array();
        for (var j = 0; j < N; j++){
            temp[i][j] = matrix[i][j];
     }
  }
   
  for (var i = 0; i < N; i++)
    for (var j = 0; j < N; j++)
      matrix[j][N - i - 1] = temp[i][j];     
};

面試題 01.07. 旋轉矩陣
給你一幅由 N × N 矩陣表示的圖像,其中每個像素的大小爲 4 字節。請你設計一種算法,將圖像旋轉 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]
]

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/rotate-matrix-lcci
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章