leetcode-顺时针打印矩阵-50
Posted 天津 唐秙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-顺时针打印矩阵-50相关的知识,希望对你有一定的参考价值。
题目要求
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
思路
模拟二维矩阵的边界,如果打印过,边界就对应缩小,直到将数组内的元素打印完。
代码实现
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if (matrix.empty())
return{};
int b = matrix.size()-1; //下边界
int r = matrix[0].size()-1; //右边界
int t = 0; //上边界
int l = 0; //左边界
vector<int> res;
while (true)
{
//left->right
for (int i = l; i <= r; i++)
res.push_back(matrix[t][i]);
if (++t > b)
break;
for (int i = t; i <= b; i++)
res.push_back(matrix[i][r]);
if (--r < l)
break;
for (int i = r; i >= l; i--)
res.push_back(matrix[b][i]);
if (--b < t)
break;
for (int i = b; i >= t; i--)
res.push_back(matrix[i][l]);
if (++l > r)
break;
}
return res;
}
};
以上是关于leetcode-顺时针打印矩阵-50的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode]剑指 Offer 29. 顺时针打印矩阵
[LeetCode]剑指 Offer 29. 顺时针打印矩阵