题解 | #顺时针打印矩阵#
顺时针打印矩阵
https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int> res;
int n = matrix.size();
if( n == 0){
return res;
}
int left = 0;
int right = matrix[0].size()-1; //这里需要注意的是矩阵不一定是方阵,很容易想当然地认为是n-1;
int top = 0;
int bottom = n-1;
while(left<=right && top <= bottom){
//最上面一行从左往右
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;
}
};
模拟法,I got it!


