矩阵旋转(二维数组旋转)

 

给定一个 × n 的二维矩阵表示一个图像。

将图像旋转 90 度、180度、270度。

示例 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]

]

逆时针旋转90度

var rotate = function(matrix) {

//逆时针旋转 90 度

    //列 = 行

    //行 = n - 1 - 列(j);  n表示总行数

    var temp = [];

    var len = matrix.length;

    for(var i = 0; i < len; i++){

    for(var j = 0; j < len; j++){

    var k = len - 1 -j;

    if(!temp[k]){

    temp[k] = [];

    }

    temp[k][i] = matrix[i][j];

    }

    }

 

  return temp;

};

var arr = [

[1,2,3],

[4,5,6],

[7,8,9]

];

 

console.log(rotate(arr));

console.log(arr);

  

 

旋转 180 度

var rotate180 = function(matrix) {

//逆时针旋转 180 度

    //行 = h - 1 - 行(i);  h表示总行数

    //列 = n - 1 - 列(j);  n表示总列数

    var temp = [];

    var len = matrix.length;

    for(var i = 0; i < len; i++){

    for(var j = 0; j < len; j++){

    var k = len - 1 - i;

    if(!temp[k]){

    temp[k] = [];

    }

    temp[k][len-1-j] = matrix[i][j];

    }

    }

 

  return temp;

};

var arr = [

[1,2,3],

[4,5,6],

[7,8,9]

];

 

console.log(rotate(arr));

console.log(arr);

 

 

旋转270度

var rotate270 = function(matrix) {

//逆时针旋转 270 度

    //行 = 列

    //列 = n - 1 - 行(i);  n表示总列数

    var temp = [];

    var len = matrix.length;

    for(var i = 0; i < len; i++){

    for(var j = 0; j < len; j++){

    var k = len - 1 - i;

    if(!temp[j]){

    temp[j] = [];

    }

    temp[j][k] = matrix[i][j];

    }

    }

 

  return temp;

};

 

var arr = [

  [1,2,3],

  [4,5,6],

  [7,8,9]

];

 

console.log(rotate180(arr));

console.log(arr);

  

https://www.cnblogs.com/muamaker/p/9856221.html

posted @ 2023-03-15 09:36  imxiangzi  阅读(189)  评论(0编辑  收藏  举报