博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指OFFER——顺时针打印矩阵
阅读量:6992 次
发布时间:2019-06-27

本文共 2367 字,大约阅读时间需要 7 分钟。

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.

 

 

class Solution {public:    vector
printMatrix(vector
> matrix) { int row = matrix.size(); int col = matrix[0].size(); vector
res; // 输入的二维数组非法,返回空的数组 if (row == 0 || col == 0) return res; // 定义四个关键变量,表示左上和右下的打印范围 int left = 0, top = 0, right = col - 1, bottom = row - 1; while (left <= right && top <= bottom) { // left to right for (int i = left; i <= right; ++i) res.push_back(matrix[top][i]); // top to bottom for (int i = top + 1; i <= bottom; ++i) res.push_back(matrix[i][right]); // right to left if (top != bottom) for (int i = right - 1; i >= left; --i) res.push_back(matrix[bottom][i]); // bottom to top if (left != right) for (int i = bottom - 1; i > top; --i) res.push_back(matrix[i][left]); left++,top++,right--,bottom--; } return res; }};

#include 
#include
using namespace std;void PrintMatrix(vector
>& vec) { int row = vec.size(); int col = vec[0].size(); int start = 0; int num = 0; while (start*2 < col && start*2 < row) { int endx = col - start - 1; int endy = row - start - 1; for (int i = start; i <=endx; i++) vec[start][i] = ++num; if (start < endy) { for (int i = start + 1; i <= endy; i++) vec[i][endx] = ++num; } if (start < endx&&start < endy) { for (int i = endx-1; i >= start; i--) vec[endy][i] = ++num; } if (start < endx&&start < endy - 1) { for (int i = endy - 1; i > start; i--) vec[i][start] = ++num; } start++; } return;}int main() { int num; cin >> num; vector
> vec1(num, vector
(num, 0)); PrintMatrix(vec1); for (int i = 0; i < num; i++) for (int j = 0; j < num; j++) cout<< vec1[i][j]<<" "; return 0;}

 

转载于:https://www.cnblogs.com/LUO77/p/5403330.html

你可能感兴趣的文章
Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
查看>>
SQL Server2008 删除登录记录
查看>>
js数字验证
查看>>
Nginx 配置指令的执行顺序(九)
查看>>
【百度地图API】如何激发手机的高分辨率
查看>>
DIV+CSS专题:十天学会DIV+CSS
查看>>
2015第5周日
查看>>
输入法之模型剪枝一(基于熵的剪枝)
查看>>
《全体育&#183;瑜伽》
查看>>
UML中类图的符号解释
查看>>
HDU 4421 Bit Magic (图论-2SAT)
查看>>
[LeetCode]Add Binary
查看>>
HDU 5112 A Curious Matt 水题
查看>>
Activity具体解释(生命周期、以各种方式启动Activity、状态保存,全然退出等)...
查看>>
[LeetCode] Permutation Sequence 序列排序
查看>>
MyBatis3: Could not find SQL statement to include with refid ‘
查看>>
scala spray 概念性内容的总结
查看>>
Spring中配置数据源的4种形式(转)
查看>>
分享9款极具创意的HTML5/CSS3进度条动画
查看>>
Windows 之 CMD命令
查看>>