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

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

方法:循环遍历整个数组,循环中再嵌套四个循环,分别是从左至右,从上至下,从右至左,从下至上这几个方向,按照题意将整个数组遍历完成,控制好边界。

时间复杂度:O(mn),空间复杂度:O(1)

vector<int> printMatrix(vector<vector<int> > matrix) 
{
	int bottom=matrix.size()-1;
	int right=matrix[0].size()-1;
	int left=0,top=0;
	vector<int> res;
	
	while(top<=bottom&&left<=right)
	{
		for(int i=left;i<=right;i++)
		{
			res.push_back(matrix[top][i]);
		}
		top++;
		//判断是否达到边界循环结束
		if(top>bottom)
		{
			break;
		} 
		
		for(int i=top;i<=bottom;i++)
		{
			res.push_back(matrix[i][right]);
		}
		right--;
		//判断是否达到边界循环结束
		if(left>right)
		{
			break;
		}
		
		for(int i=right;i>=left;i--)
		{
			res.push_back(matrix[bottom][i]);
		}
		bottom--;
		//判断是否达到边界循环结束
		if(top>bottom)
		{
			break;
		} 
		
		for(int i=bottom;i>=top;i--)
		{
			res.push_back(matrix[i][left]);
		}
		left++;
		//判断是否达到边界循环结束
		if(left>right)
		{
			break;
		}
	}
	return res;
	
}
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务