在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
二分查找,复杂度nlogn
bool Find(vector<vector<int>> array1, int target)
{ int rowCount,colCount; int mid=0; rowCount = array1.size(); colCount = array1[0].size(); for(int i=0 ; i<rowCount ; i++) { int low = 0; int high = colCount - 1;// int mid; while(low <= high) { mid = (low + high)/2; if(target == array1[i][mid]) return true; else if(target < array1[i][mid]) { high = mid -1; } else if(target > array1[i][mid]) { low = mid+1; } } } return false;//必须放在最外层,否则可能造成没有输出(编译通不过)}新闻热点
疑难解答