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

相关推荐

不愿透露姓名的神秘牛友
07-07 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务