/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param target int整型 * @param array int整型二维数组 * @param arrayRowLen int array数组行数 * @param arrayColLen int* array数组列数 * @return bool布尔型 */ bool Find(int target, int** array, int arrayRowLen, int* arrayColLen ) { // write code here; if(array==NULL) return false; int k=0; //行数进行二分查找会不严谨(本人拙见,可能会不正确,大佬发现漏洞请务必指出来QwQ) //例如{7{1,2,3},{2,5,7},{3,6,9},{8,10,11}}它会锁定到第三行,最后找不到7 for(int i=0;i<arrayRowLen;i++)//第一层循环遍历每一行 { if(array[i][*arrayColLen-1]>=target&&array[i][0]<=target) { int l=0; int r=*arrayColLen-1; //锁定行数后进行二分查找列 while(l<=r) { int mid=(l+r)/2; if(array[i][mid]<=target) l=mid+1; else r=mid-1; } if(array[i][l-1]==target) return true; } if(target<array[i][0]) return false; } return false; }