class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param target int整型 * @param array int整型vector<vector<>> * @return bool布尔型 */ bool Find(int target, vector<vector<int> >& array) { // write code here // 解法二:一行一行的用二分查找; int row=array.size(); int col=array[0].size(); for(int i=0; i<row; ++i) { bool flag = false; int l=0, r=col-1; while(l<=r) { int index = (l+r)/2; if(array[i][index]==target) { flag = true; break; } if(array[i][index]<target) l = index+1; if(array[i][index]>target) r = index-1; } if(flag) return true; } return false; // 解法一:理解错了,注意arry[i+1]中的元素并不全大于arry[i]中的元素; // int row = array.size(); // int col = array[0].size(); // // 先确定行所在位置 // int row_h=0, row_l=row-1; // int row_index = 0; // while(row_h<=row_l) // { // row_index = (row_h+row_l)/2; // // 找到该整数 // if((array[row_index][0]==target) || (array[row_index][col-1]==target)) // return true; // // 找到所在行 // if((array[row_index][0]<target) && (array[row_index][col-1]>target)) // break; // if(array[row_index][col-1]<target) // row_h = row_index+1; // if(array[row_index][0]>target) // row_l = row_index-1; // } // // 再确定列位置 // int col_l=0, col_r=col-1; // int col_index = 0; // while(col_l<=col_r) // { // col_index = (col_l+col_r)/2; // // 找到该整数 // if(array[row_index][col_index]==target) // return true; // if(array[row_index][col_index]<target) // col_l = col_index+1; // if(array[row_index][col_index]>target) // col_r = col_index-1; // } // return false; } };