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 }

     

  • 相关阅读:
    java知识总结-15
    java知识总结-14
    java知识总结-13
    Java知识总结-12
    Java知识总结-11
    Java知识总结-10
    Java知识总结-9
    Java知识总结-8
    Java知识总结-7
    SSO
  • 原文地址:https://www.cnblogs.com/double891/p/7771819.html
Copyright © 2011-2022 走看看