力扣算法笔记--3--旋转图像(数组)

·旋转图像

  给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。


示例:

分析:

  借助另一个数组,将原始矩阵的元素全部存放到数组中,每一列自下而上,每一行自左向右,依次存放到数组中,之后再将数组中的元组按照赋值到原矩阵中,原则:

for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            matrix[i][j]=ret[i*n+j];//依次重新赋值到矩阵中,从而实现旋转
        }
    }

如图:


运行截图:

·代码
#include<vector>
#include<iostream>
using namespace std;
vector <vector <int> > v;
vector <int> v1;
void rotate(vector<vector <int> >& matrix);
void show(vector <vector<int> > matrix);

int main(){
      for(int i=1;i<4;i++){
          v1.push_back(i);
    }
    for(int i=1;i<4;i++){
        v.push_back(v1);
    }
    show(v);
    rotate(v);
    cout<<"after turned:"<<endl;
    show(v);
}
void show(vector <vector<int> > matrix){
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++)
            cout<<v[i][j]<<" ";
        cout<<endl;
    }    
}
void rotate(vector<vector <int> >& matrix){
    int n=matrix.size();
    vector <int> ret;
    for(int j=0;j<n;j++){
        for(int i=n-1;i>=0;i--){
            ret.push_back(matrix[i][j]);
            
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            matrix[i][j]=ret[i*n+j];
        }
    }
}

 

posted @ 2021-06-09 15:56  他乡一故知  阅读(57)  评论(0编辑  收藏  举报