思路:给定矩阵的左上和右下的点,可以确定矩阵最外边的那个'框',顺时针打印这个框;然后让两个点分别在对角线方向向内进一个,进而形成新的框,重复过程。
vector<int> ClockwiseMatrix(vector<vector<int>> matrix)
{
vector<int> res;
if(matrix.size() == 0 || matrix[0].size() == 0)return res;
int top = 0;
int left = 0;
int bottom = matrix.size() -1;
int right = matrix[0].size() -1;
while(top <= bottom && left <= right)
{
for(int I = left; I<= right; I++)res.push_back(matrix[top][I]);
for(int j = top+1; j<= bottom; j++)res.push_back(matrix[j][right]);
if(top != bottom)
for(int I = right-1; I >= left; I--)res.push_back(matrix[i][bottom]);
if(left != right)
for(int j=bottom-1; j>top; j--)res.push_back(matrix[top][j]);
top++;
left++; // 向右下走一步
bottom--;
right--; // 向左上走一步
}
}