在线编程,剑指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;
    }
};
全部评论
可能和空数组有关系。
点赞 回复 分享
发布于 2016-05-26 21:37
对空数组做判断了啊,我改了一下,是这样写的,但还是报之前一样的问题 vector<int> matResult; matResult.clear(); if(matrix.size()<=0){     return matResult; }
点赞 回复 分享
发布于 2016-05-27 09:43
明显有错啊,第四种情况要在三满足情况下才有
点赞 回复 分享
发布于 2016-05-30 23:50

相关推荐

头像
09-29 16:18
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务