出现段错误,求指点

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
以下是我的代码,提交后系统说:段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起 case通过率为0.00% 请大神们指点指点😫😫 class Solution {
public:
    bool Find(int target, vector<vector<int> > array) 
    {
        int a=array.size()/2,b=array[0].size()/2;
      if(target>array[a][b]) 
      {
          for(int i=a;i<=array.size()-1;i++)
              for(int j=0;j<=array[0].size()-1;)
              {
                  if(array[i][j]==target)
                      return true;
                  else 
                      j++;
              }
        return false;
      }
        else if(target<array[a][b]) 
        {
            for(int i=0;i<=a;i++)
              for(int j=0;j<=array[0].size()-1;)
              {
                  if(array[i][j]==target)
                      return 1;
                  else 
                      j++;
              }
             return false;
        }
        else
            return true;
    }
};

#笔试题目#
全部评论
array[0]一定存在?
点赞
送花
回复
分享
发布于 2019-10-02 21:57
我不懂Java,但是用了for,后面可以写j++么?
点赞
送花
回复
分享
发布于 2019-10-02 22:04
滴滴
校招火热招聘中
官网直投
换个方法吧 复杂度太大了溢出不是很正常
点赞
送花
回复
分享
发布于 2019-10-02 22:11
做个入参检查,检查一维数组长度是否为零,二维数组长度是否为零;
点赞
送花
回复
分享
发布于 2019-10-02 22:34
1) 输入检测, 判断array是否是二维数组 2)你这方法不对,比target大的值可能在B、C、D区域,                                比target小的值可能在A、B、C区域。                 |       A        |         B                 | ---------target-----------                 |       C       |         D                 |
点赞
送花
回复
分享
发布于 2019-10-02 23:07
理论上复杂度,可以优化到o(m+n),m n是二维list的维度
点赞
送花
回复
分享
发布于 2019-10-02 23:13
剑指offer第一题??从右上或左下扫描吧
点赞
送花
回复
分享
发布于 2019-10-02 23:20

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务