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面试题29. 顺时针打印矩阵

LeetCode面试题29. 顺时针打印矩阵

[LeetCode]剑指 Offer 29. 顺时针打印矩阵

[LeetCode]剑指 Offer 29. 顺时针打印矩阵

LeetCode(剑指 Offer)- 29. 顺时针打印矩阵

剑指offer 顺时针打印矩阵