题目
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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]
解答
循环
行数m,列数n。不难发现这是一个循环
i = 0, j++
j = n-1, i++
i = m-1, j--
j = 0, i--
i = 1, j++
j = n-2, i++
j = m-2, j--
j = 1, i--
代码
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
int m = matrix.size(), n = matrix[0].size();
int i = 0, j = 0, k = 0;
vector<int> print;
while(1){
if(j == n - k) break;
for(; j < n - k; j++)
print.push_back(matrix[i][j]);
i++; j--;
if(i == m - k) break;
for(; i < m - k; i++)
print.push_back(matrix[i][j]);
i--; j--;
if(j < k) break;
for(; j >= k; j--)
print.push_back(matrix[i][j]);
k++;
i--; j++;
if(i < k) break;
for(; i >= k; i--)
print.push_back(matrix[i][j]);
i++; j++;
}
return print;
}
};