顺时针打印矩阵
来源:互联网 发布:网络打印机重启后脱机 编辑:程序博客网 时间:2024/05/16 12:25
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
例如,如果输入如下矩阵: 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.
//很惭愧,编译了多次才通过的代码。。
/*
思想,用左上和右下的坐标定位出一次要旋转打印的数据,一次旋转打印结束后,往对角分别前进和后退一个单位。
提交代码时,主要的问题出在没有控制好后两个for循环,需要加入条件判断,防止出现单行或者单列的情况。
*/
class
Solution {
public
:
vector<
int
> printMatrix(vector<vector<
int
> > matrix) {
int
row = matrix.size();
int
col = matrix[0].size();
vector<
int
> 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;
}
};
0 0
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- CSS3中在一个元素中显示多个背景图像
- hackerrank infinitum16 E To Infinity and Beyond
- Java多线程 -- JUC包源码分析4 -- 各种锁与无锁
- velocity 导入外部文件
- 提升方法AdaBoost算法学习笔记
- 顺时针打印矩阵
- UVA 10755 Garbage Heap (预处理+扫描维护)
- 为什么二维数组不能赋值为二维指针
- 连续子数组最大和问题
- 近期tasks
- hdu1024
- 包含min函数的栈
- nodejs调试框架node-inspector使用
- Hadoop2.x从源码讲解作业配置