【剑指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 }
执行结果