题目:顺时针打印矩阵
网址: 顺时针打印矩阵
前沿: 这个题目本身不难,但是这里特意拿出来,为的是需要处理数组边界问题,一定要注意这个,这个很重要。
代码:
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
int m = matrix.size();
int n = matrix[0].size();
if(m==0 && n==0) return vector<int>();
int rotate = ceil(min(m, n)*1.0 / 2);
vector<int> res;
for(int i=0;i<rotate;i++){
//每轮计算
for(int j=i;j<=n-i-1;j++) res.push_back(matrix[i][j]);
for(int j=i+1;j<=m-i-1;j++) res.push_back(matrix[j][n-i-1]);
if(m-i-1!=i) // important
for(int j=n-i-2;j>=i;j--) res.push_back(matrix[m-i-1][j]);
if(n-i-1!=i) //important
for(int j=m-i-2;j>=i+1;j--) res.push_back(matrix[j][i]);
}
return res;
}
};
Note: 算法题有时候边界判断真的比算法更加重要