Problem
leetcode链接problem
感觉很乱,因为很多太多特例了。
Code
using namespace std;
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.empty() || matrix[0].empty())
{
return false;
}
int m = matrix.size();
int n = matrix[0].size();
cout << m << "," << n << endl;
if(n == 0 && m == 0)
{
return false;
}
if(n == 1 && m == 1)
{
if(matrix[0][0] == target)
return true;
else
return false;
}
int key = -1;
if(target < matrix[0][0] || target > matrix[m-1][n-1])
{
cout << "min,max" << endl;
return false;
}
for(int i = 0;i < m;i++)
{
if(matrix[i][0] <= target && matrix[i][n-1] >= target)
{
key = i;
}
}
cout << "key=" << key <<endl;
if(key == -1)
{
return false;
}
int mid = 0;
int left = 0;
int right = n - 1;
if(n == 1)
{
if(matrix[key][0] == target)
return true;
else return false;
}
while(left < right)
{
mid = (left + right) / 2;
if(matrix[key][mid] == target || matrix[key][left] == target || matrix[key][right] ==target)
return true;
else if(matrix[key][mid] < target){
//mid = left + 1;
left = mid + 1;
}
else{
//mid = right - 1;
right = mid - 1;
}
cout << "matrix[key][mid]" << matrix[key][mid] << endl;
}
return false;
}
};