在线编程,剑指offer,顺时针打印数组,
按照每次打印一圈的思路编的程序,总是告诉我
段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
谁知道是哪里错了?在vs里面明明可以的。。。求解答
class Solution {
public:
vector<int> printMatrix(vector<vector<int>
> matrix) {
int n=matrix.size(),m=matrix[0].size();
if(n<=0||m<=0||matrix.size()==0){
vector<int> error;
return error;
}
int start=0;
vector<int> matResult;
matResult.clear();
while(n>2*start&&m>2*start){
//打印一圈
int iTo=n-1-start,jTo=m-1-start;//行、列的边界
//打印一圈分4步:
//1.从左到右打印一行--肯定有
for(int j=start;j<=jTo;j++){
matResult.push_back((matrix[start])[j]);
}
//2.从上到下打印一列--列的起点和终点至少相差1
if(jTo-start>=1){
for(int i=start+1;i<=iTo;i++){
matResult.push_back((matrix[i])[jTo]);
}
}
//3.从右到左打印一行--与2类似
if(iTo-start>=1){
for(int j=jTo-1;j>=start;j--){
matResult.push_back((matrix[iTo])[j]);
}
}
//4.从下到上打印一列
if(jTo-start>=2){
for(int i=jTo-1;i>=start;i--){
matResult.push_back((matrix[i])[start]);
}
}
start++;
}
return matResult;
}
};