【剑指offer】01 二维数组中的查找

题目地址:二维数组中的查找

题目描述                                   

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

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M

题目示例                                   

输入:
7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

返回值:
true

解法分析                                   

本题可理解为target与数组中的值作比较,若相等则返回true,不等则返回false,考虑到效率问题,可以从数列左下角数值开始对比,target大于该数值则向右查找,target小于该数值则向上查找。

代码                                         

 1 function Find(target, array)
 2 {
 3     const i=array.length;
 4     const j=array[0].length;
 5     var m=i-1;
 6     var n=0;
 7     while(m>=0&&n<=j-1){
 8         if(target>array[m][n]){
 9             n++;
10         }else if(target<array[m][n]){
11             m--;
12         }else return true;
13     }
14     return false;
15 }

执行结果                                   

原文地址:https://www.cnblogs.com/sunlinan/p/14171640.html