剑指offer面试题[20]-顺时针打印矩阵
来源:互联网 发布:windows命令行解压zip 编辑:程序博客网 时间:2024/05/21 21:01
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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<int> printMatrix(vector<vector<int> > matrix) { int row=matrix.size(); int col=matrix[0].size(); if(row==0&&col==0) return matrix[0]; int start=0; vector<int> result; while(row>start*2&&col>start*2) //每一个圈占用两行,画图分析 { int endx=col-1-start; int endy=row-1-start; //从左往右打印当前圈的第一行 for(int i=start;i<=endx;i++) result.push_back(matrix[start][i]); //从上往下打印 if(start<endy) { for(int i=start+1;i<=endy;i++) //start+1是因为上面从左往右已经把matrix[start][endx]打印了 result.push_back(matrix[i][endx]); } //从右往左打印 if(start<endx&&start<endy) //必须起始的行和列均大于剩余行和列 { for(int i=endx-1;i>=start;i--) result.push_back(matrix[endy][i]); } //从下往上打印 if(start<endx&&start<endy-1) //必须起始的行和列均大于剩余行和列 { for(int i=endy-1;i>=start+1;i--) //start+1是因为上面从左往右已经把matrix[start][endx]打印了 result.push_back(matrix[i][start]); } start++; } return result; }};
阅读全文
0 0
- 《剑指offer》面试题:顺时针打印矩阵
- 剑指offer面试题 顺时针打印矩阵
- 剑指offer面试题20顺时针打印矩阵
- [剑指offer][面试题20]顺时针打印矩阵
- 剑指offer 面试题20:顺时针打印矩阵
- 《剑指offer》面试题20顺时针打印矩阵
- 【剑指offer】面试题20:顺时针打印矩阵
- 剑指offer 面试题20 顺时针打印矩阵
- 剑指Offer:面试题20 顺时针打印矩阵
- 《剑指Offer》面试题20:顺时针打印矩阵
- 剑指offer 面试题20—顺时针打印矩阵
- 《剑指Offer》学习笔记--面试题20:顺时针打印矩阵
- 剑指offer--面试题20:顺时针打印矩阵--Java实现
- 【剑指Offer学习】【面试题20 : 顺时针打印矩阵】
- 剑指offer面试题20-顺时针打印矩阵
- 剑指offer-面试题20:顺时针打印矩阵
- 剑指offer之面试题20:顺时针打印矩阵
- 剑指offer之面试题20顺时针打印矩阵
- poj2115 数论 同余方程
- 解决树莓派鼠标延迟/迟滞问题解决
- 使用gdb调试多进程多线程调试
- better call saul S03E09(10append)
- 分享我的设计: jxt (强结构文档数据表示协议),源码适时开放
- 剑指offer面试题[20]-顺时针打印矩阵
- 装饰者模式-Decorator
- 浏览器缓存机制
- Nginx(PHP/fastcgi)的PATH_INFO配置
- 今天突然看到第一个模块是linux,就找了一个,看看。
- 组合模式-Component
- 物联网
- Thinking in java-7 代码重用
- java内部类