1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include<bits/stdc++.h> using namespace std;
class Solution { public: bool bs(vector<vector<int>>& v, int y, int fx, int ex, int t){ int l = fx-1; int r = ex; while(l+1 != r){ int mid = (l+r)/2; if(v[mid][y] < t){ l = mid; }else{ if(v[mid][y] == t) return true; r = mid; } } return false; } bool searchMatrix(vector<vector<int>>& v, int t) { int n = v.size(), m = v[0].size(); int l = 0; int r = m; while(l+1 != r){ int mid = (l+r)/2; if(v[0][mid] <= t){ l = mid; }else{ r = mid; } } for(int i = l ; i >= 0 ; i --){ if(bs(v, i, 0, n, t)) return true; } return false; } };
|