参考:B站UP--子烁爱学习(推荐大家观看原视频)
题目描述:

题目解析:

举例:如图所示的从左到右,从上到下递增的二维数组
解题思路:
这样的二维数组是左上角最小,右下角最大,处于右上角的元素是数组的分界点(拐点),若目标值比右上角元素大,那么其肯定在右上角元素的下面部分,若比之小,则在其左半边部分。
若想找到目标元素,那么就得将目标元素和拐点元素比较,确定目标值在哪个部分,一步一步缩小查找范围,直到找到该值。
代码展示:
public class Algorithm01 { public boolean findOne(int target,int [][] arr){ //找出拐点元素arr[a][b] int lines = arr.length; int cols = arr[0].length; int a=0; int b=cols-1; //在二维数组中依据拐点元素循环查找 while(a<lines && b>=0){ if (target == arr[a][b]){ return true; }else if (target > arr[a][b]){ a++; }else{ b--; } } return false; } }