剑指Offer——(19)顺时针打印矩阵
来源:互联网 发布:淘宝怎样上下架时间 编辑:程序博客网 时间:2024/05/24 07:15
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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 -> 4 ↓5 -> 6 -> 7 8↑ ↓ ↓9 10 <- 11 12↑ ↓13 <- 14 <- 15 <- 16*///将问题分解成若干子问题//1.控制按圈打印//2.一圈之内如何打印//每一圈的起始坐标都在矩阵主对角线上,判断何时结束绕圈//圈内打印时注意判断特殊情况,最少都有一行//1.只有一行//2.只有一列//3.2*2大小//4.3*3大小及以上class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { vector<int> vec; int row = matrix.size(); if (row < 1) return vec;//判断vector是否为空 int col = matrix[0].size(); int startRow = 0; int startCol = 0; int endRow = matrix.size() - 1; int endCol = matrix[0].size() - 1; int i = 0; while (row > startRow * 2 && col > startCol * 2)//判断起始点是否真实存在 { for (i = startCol; i <= endCol; ++i)//无论如何,最少都会有一行 { vec.push_back(matrix[startRow][i]); } //如果进行第二步打印,必须满足endRow-startRow>=1,排除只有一行的情况 if (endRow - startRow >= 1) { for (i = startRow + 1; i <= endRow; ++i) { vec.push_back(matrix[i][endCol]); } } //如果进行第三步打印,要在第二步条件的基础上满足endCol-startCol>=1,排除只有一列的情况 if (endCol - startCol >= 1 && endRow - startRow >= 1) { for (i = endCol - 1; i >= startCol; --i) { vec.push_back(matrix[endRow][i]); } } //如果进行第四步打印,要在第三步条件的基础上满足endRow-startRow>=2,排除2*2的情况 if (endRow - startRow >= 2 && endCol - startCol >= 1) { for (i = endRow - 1; i > startRow; --i) { vec.push_back(matrix[i][startCol]); } } //调整边界范围,进行下一圈打印 startRow += 1; startCol += 1; endRow -= 1; endCol -= 1; } return vec; }};
0 0
- 剑指offer(19)—顺时针打印矩阵
- 剑指Offer——(19)顺时针打印矩阵
- 《剑指offer》——顺时针打印矩阵
- 《剑指offer》——顺时针打印矩阵
- 剑指offer——顺时针打印矩阵
- 剑指offer——顺时针打印矩阵
- 剑指offer——顺时针打印矩阵
- 剑指offer——顺时针打印矩阵
- 剑指offer——顺时针打印矩阵
- 剑指offer—顺时针打印矩阵
- 剑指Offer—19—顺时针打印矩阵
- 剑指offer 19 顺时针打印矩阵
- 剑指Offer(19)______顺时针打印矩阵
- 牛客网-剑指offer-19-顺时针打印矩阵
- (《剑指Offer》笔记)顺时针打印矩阵
- 剑指Offer:顺时针打印矩阵(JAVA)
- 剑指offer(21):顺时针打印矩阵
- 剑指offer(16)-顺时针打印矩阵
- c++运算符重载总结
- 微信小程序免费https证书报错https证书无效
- Fortran语言编程实现读取数据文件行数
- 机器人可检查桥梁结构和故障:精准度达96%
- xcode模拟器启动app错误
- 剑指Offer——(19)顺时针打印矩阵
- struct和typedef struct的区别
- BZOJ 1500: [NOI2005]维修数列 Splay
- 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
- U-boot1.1.6移植之Makefile分析(一)
- 一列多个标签居中显示
- JSON解析类库之Gson(6) --- 从指定的流中读取Json,并反序列化为指定类的对象
- gulp详细入门教程
- B树、B-树、B+树