二维数组的查找

题目描述

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 
 
思考:     2020/8/26    (思维的极限了)
  判断数组中是否含有某个数,显然,可以遍历整个数组进行查找。 但是,这样时间复杂度太高。
  于是,需要分析数据结构,算法就是建立在数据结构之上的。

 

   对于每一个⚪,左边的元素都小于它,下边的元素都大于它。

  但是我们无法知道⚪之间谁大谁小,也就无法定位到目标元素的位置!!!! 比如这里有两个⚪,如果目标元素大于这两个⚪的值,那么我们是无法知道目标元素可能存在于哪一个列中的。

 

-----

  如果按照上面的想法,那么是永远都不会想明白的。 因为一开始就想错了!!! 根本就没有两个⚪,一直都是在移动一个⚪

代码:     ( 二维数组中的二分查找  )

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

 

 

posted @ 2020-08-26 17:54  你眼里的星辰  阅读(69)  评论(0)    收藏  举报