顺时针打印矩阵
来源:互联网 发布:php静态计数器 编辑:程序博客网 时间:2024/06/07 04:11
题目
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
思路
暴力模拟,用i和j表示当前矩阵的行坐标和列坐标,left,right表示左右边界,up,down表示上下边界,然后按照上边,右边,下边,左边的顺序扫描矩阵的元素,当扫描完一圈之后,把边界缩小一行(列),继续扫描,同时统计当前已经扫描到的元素的个数,当元素全部扫描完之后即可。
参考代码
class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { int col = matrix.size(), row = matrix[0].size(); int i = 0, j = 0, left = 0, right = row - 1, up = 0, down = col - 1, sum = col * row, cnt = 0; vector<int> ans; while (left <= right && up <= down && cnt < sum) { while (j <= right && cnt < sum) { cnt++; ans.push_back(matrix[i][j++]); } i++, j--; while (i <= down && cnt < sum) { ans.push_back(matrix[i++][j]); cnt++; } i--, j--; while (j >= left && cnt < sum) { ans.push_back(matrix[i][j--]); cnt++; } i--, j++; while (i > up && cnt < sum) { ans.push_back(matrix[i--][j]); cnt++; } i++, j++; up++, left++, down--, right--; } return ans; }};
阅读全文
0 0
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- Mysql开发技巧
- 基于pycaffe从零开始写mnist(第一篇)——生成txt文件
- Codeforces Round #425 (Div. 2) A. Sasha and Sticks
- LeetCode 21. Merge Two Sorted Lists
- socket套接字编程
- 顺时针打印矩阵
- 【设计模式】简单工厂、工厂方法和抽象工厂
- 欢迎使用CSDN-markdown编辑器
- 桥接模式
- jggrid带有参数
- 使用Hawk进行数据存储
- 学习日记
- 小程序事件机制
- Codeforces Round #425 (Div. 2) B. Petya and Exam