题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.
//主要是要判断好边界条件
class Solution {
public:
vector<int> printMatrix(vector<vector<int>> matrix) {
vector<int> ret;
int columns = matrix[0].size(); //列
int rows = matrix.size(); //行
if(columns <= 0 || rows <= 0)
{
return ret;
}
int go_right = columns - 1;
int go_down = rows - 1;
int go_left = 0;
int go_up = 0;
int i = 0;
while(go_up <= go_down && go_left <= go_right)
{
for(i = go_left; i <= go_right; i++) //向右
{
ret.push_back(matrix[go_up][i]);
}
for(i = go_up + 1; i <= go_down; i++) //向下
{
ret.push_back(matrix[i][go_right]);
}
for(i = go_right - 1; i >= go_left && go_up < go_down; i--) //向左
{
ret.push_back(matrix[go_down][i]);
}
for(i = go_down - 1; i > go_up && go_right > go_left; i--) //向上
{
ret.push_back(matrix[i][go_left]);
}
go_up++;
go_left++;
go_right--;
go_down--;
}
return ret;
}
};