Leetcode, SearchA2DMatrix
#include <iostream>
#include <vector>
using namespace std;
//二分查找,时间复杂度O(logn),空间复杂度O(1)
bool solution(const vector<vector<int>> &matrix, int target )
{
if (matrix.empty()) return false;
const int m = matrix.size();
const int n = matrix.front().size();
int first = 0, last = m * n;
while (first < last)
{
int mid = first + (last - first) / 2;
int value = matrix[mid / n][mid % n];
if (value == target)
{
return true;
}
else if (target > value)
{
first = mid + 1;
}
else
{
last = mid;
}
}
return false;
}
int main()
{
vector<vector<int>> vec = { {1,3,5,7}, {10,11,16,20}, {23,30,34,50}};
cout << solution(vec, 3) << endl;
return 0;
}