nowcoder-顺时针打印矩阵-模拟魔方逆时针旋转
来源:互联网 发布:网站机器人源码 编辑:程序博客网 时间:2024/05/19 18:12
题目
顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
矩阵为:
1 2 3 45 6 7 89 10 11 12 13 14 15 16
思想
首先将第一行打印,并删除第一行
5 6 7 89 10 11 1213 14 15 16
将矩阵逆时针旋转
8 12 167 11 156 10 145 9 13
将第一行打印,删除第一行
….
重复上述步骤,直到剩余矩阵为空。
代码
class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { while(!matrix.empty()){ //判断剩余矩阵是否为空 for(int i = 0; i < matrix[0].size(); i++){ ans.push_back(matrix[0][i]); //输出第一行 } matrix.erase(matrix.begin()); //删除第一行 temp = Contrarotate(matrix); //逆时针旋转矩阵 matrix.clear(); matrix = temp; } return ans; } vector<vector<int> > Contrarotate(vector<vector<int> > matrix){ vector<vector<int> > vec; if(matrix.empty())return vec; int m = matrix.size(), n = matrix[0].size(); vec.resize(n); //初始化旋转后的矩阵的大小 for(int c = 0; c < vec.size(); c++){ vec[c].resize(m); } for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ vec[i][j] = matrix[j][n-1-i]; //逆时针旋转 } } return vec; }private:vector<vector<int> > temp;vector<int> ans;};
阅读全文
0 0
- nowcoder-顺时针打印矩阵-模拟魔方逆时针旋转
- 顺时针和逆时针打印矩阵
- java顺时针、逆时针打印矩阵
- java顺时针、逆时针打印矩阵
- java顺时针、逆时针打印矩阵
- 由外向内顺时针&逆时针旋转矩阵
- 顺时针打印旋转打印矩阵
- 顺时针打印矩阵(旋转矩阵)
- Arrays_Strings 90度顺时针逆时针旋转方形矩阵 @CareerCup
- openCv 图像顺时针、逆时针旋转
- openCv 图像顺时针、逆时针旋转
- 蓝桥杯-魔方(模拟-二阶xyz顺时针旋转)
- 顺时针,逆时针,zigzag矩阵详解
- 矩阵------顺时针打印矩阵+顺时针旋转矩阵+之字形打印矩阵(Java)
- 逆时针打印矩阵
- 逆时针打印矩阵
- 逆时针打印矩阵
- 【矩阵】矩阵顺时针旋转
- PAT 1025. PAT Ranking (25) 数据结构,排序
- LeetCode
- 视频动作识别--Convolutional Two-Stream Network Fusion for Video Action Recognition
- 动态联编实现原理分析 C++虚函数地址
- Java中常用的六个设计原则
- nowcoder-顺时针打印矩阵-模拟魔方逆时针旋转
- 查看端口号,杀死端口号
- Linux进阶之 head 命令
- tabs切换划过的效果
- Asp.net上传文件Request.files获取不到文件
- CodeForces
- Mysql类型与java类型的对应关系
- 【C/C++开发】C++之enum枚举量声明、定义、使用与枚举类详解与枚举类前置类型声明
- spring-boot 添加http自动转向https