数组----二维数组中的查找

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

 

方法一:由于每行都是从左到右递增,每列都是从上到下递增可得:

左下角的数m,是该行的最小值,该列的最大值,从左下角开始遍历

若 target>m,右移一位,遍历整行

若target<m,上移一位,从上行开始遍历

若target=m,return  true

function Find(target, array)

{

        let rows = array.length;

        let  cols = array[0].length;

        if(rows == 0||cols==0){

            return false;

        }

        // 左下

        let row = rows-1;

        let col = 0;

        while(row>=0 && col<cols){

            if(target>array[row][col]){

                col++;

            }else if(target<array[row][col]){

                row--;

            }else{

                return true;

            }

        }

        return false;

}

 

方法二:从右上方开始遍历,右上方数字n为该行最大值,该列最小值

若targe>n,下移一位,从下行开始遍历

若target<n,左移一位,遍历整行

若target=n,return true

function Find(target, array)

{

        let rows = array.length;

        let  cols = array[0].length;

        if(rows == 0||cols==0){

            return false;

        }

        // 右上

        let row = 0;

        let col = cols-1;

        while(row<rows && col>=0){

            if(target>array[row][col]){

                row++

            }else if(target<array[row][col]){

                col--

            }else{

                return true;

            }

        }

        return false;

}

 

posted @ 2020-03-11 15:12  mle123  阅读(263)  评论(0编辑  收藏  举报