本题其实就是一个变形的二分查找而已。这里不采用两次二分或者一次二分的方法了,leetcode上是很详细的,这里就讲讲普通的思路是怎样的。
思路:首先就是把二维数组化为一维数组,这个时候一维数组需要开的大一些,不然的话会过不了一些大数据样例。依次把二维数组按行优先输入到一维数组中;
然后,就开始最常规的二分查找就行了。
上代码:
class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int index;int i,j;int left=0;int right;vector<int>num(10100);int k=0;for(i=0;i<matrix.size();i++){for(j=0;j<matrix[0].size();j++){num[k++]=matrix[i][j];}}right=k-1;while(left<=right){int mid=(right+left)/2;if(num[mid]==target)return true;else if(num[mid]>target)right=mid-1;elseleft=mid+1;}return false;}
};