zoukankan      html  css  js  c++  java
  • 剑指offer----二维数组中的查找

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    第一种方法:

    设target是所要查找的数

     二维数组是有序的,我们可以现从右上方开始查找,若target>右上角的数,说明所要找的数在下面,所以使得row++;若target<右上角的数,说明在左边,使得column--;直到

    找到数据跳出(true)或者遍历完所有的数据(false)。

     1 public class Solution {
     2     public boolean Find(int target, int [][] array) {
     3         boolean found=false;
     4         int lie=array[0].length;
     5         int hang=array.length;
     6         int row=0,column=lie-1;
     7         while(row<hang&&column>=0){
     8             if(target>array[row][column])row++;
     9             else if(target<array[row][column])column--;
    10             else {found=true;break;}
    11         }
    12         return found;
    13     }
    14 }

    第二种方法:

    依次遍历每一行,在行内用二分查找法。

     1 public class Solution {
     2     public boolean Find(int target, int [][] array) {
     3         int i,mid;
     4         int low,high;
     5         for(i=0;i<array.length;i++){
     6             low=0;
     7             high=array[i].length-1;
     8             while(low<=high){
     9             mid=(low+high)/2;
    10             if(target>array[i][mid])low=mid+1;
    11             else if(target<array[i][mid])high=mid-1;
    12             else return true;
    13             }
    14         }      
    15         return false;
    16     }
    17 }

     

  • 相关阅读:
    【JavaEE】之MyBatis开发DAO
    【JavaEE】之MyBatis与原生JDBC、Hibernate访问数据库的比较
    【JavaEE】之MyBatis插入数据后获取自增主键
    【JavaEE】之MyBatis的ParameterType的使用
    【Android
    【Android
    【设计模式】
    【设计模式
    架构师十项技能
    tcp 出现rst情况整理
  • 原文地址:https://www.cnblogs.com/double891/p/7771819.html
Copyright © 2011-2022 走看看