二维数组的查找

思路

方法一:

首先选取矩阵右上角的元素作为起始元素,如果要查找的数字与该数字相等,则查找结束;如果该数字大于要查找的数字,则删除该数字所在的列;如果该数字小于要查找的数字,则删除该数字所在的行,这样一步步的缩小查找的范围,直到找到元素或者查找的范围为空。

 public boolean Find(int [][] array,int target){
  if(array==null||array.length==0||array[0].length==0)
                     return false
         int m=array.length;
         int n=array[0].length;
         int i=0;j=n-1;
         if(target>array[m-1][n-1]||target<array[0][0])
                  return false;
          while(i<m&&j>=0){
           if(array[i][j]>target){
                        j--;
             }else if(array[i][j]<target[i][j]){
                        i++;
              }else{
                     return true;
              }
         }
             return false;
}

方法二:

把二维数组看成一个一维的数组,则这个一维的数组是一个排序的数组,二维数组和一维数组有如下对应得关系:matrix[i][j]=a[i*列+j]。考虑到这个以后可以使用二分法来查找这个元素。

public boolean  searchMatrix(int [][] matrix,int target){
         if(matrix==null||matrix.length==0||matrix[0].length==0)
                     return false;
          int  m=matrix.length,n=matrix[0].length;
          int  start=0,end=m*n-1;
          while(start<=end){
                   int middle=(start+end)/2;
                   if(matrix[middle/n][middle%n]==target) 
                      {        return true;
                      }else if(matrix[middle/n][middle%n]<target){
                                start=middle+1;
                      }else {
                                end=middle-1;
                      }
          }
        return false;
}

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...
    clshinem阅读 381评论 0赞 1
  • 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数...
    哦漏昵称已被占用阅读 256评论 0赞 0
  • 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输...
    飞飞廉阅读 427评论 0赞 1
  • 问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数...
    梅涅劳斯阅读 236评论 0赞 0
  • 题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...
    juexin阅读 752评论 0赞 0

友情链接更多精彩内容