search a 2d box

 1 class Solution {
 2 public:
 3     bool searchMatrix(vector<vector<int> > &matrix, int target) {
 4         // Start typing your C/C++ solution below
 5         // DO NOT write int main() function
 6         if(matrix.empty() || matrix[0].empty() ) return false;
 7         int left = 0;
 8         int right = matrix.size()-1;
 9         while( left <= right)
10         {
11             int mid = (left + right)/2;
12             if( matrix[mid][0] == target )
13                 return true;
14             else if(matrix[mid][0] > target)
15                 right = mid - 1;
16             else
17                 left = mid + 1;
18         }
19         if( right == -1 ) return false;
20         int row = right;
21         left = 0; right = matrix[row].size() - 1;
22         while( left <= right )
23         {
24             int mid = (left + right)/2;
25             if( matrix[row][mid] == target )
26                 return true;
27             else if(matrix[row][mid] > target)
28                 right = mid - 1;
29             else
30                 left = mid + 1;
31         }
32         return false;
33         
34     }
35 };

 

posted on 2013-09-03 19:43  jumping_grass  阅读(129)  评论(0)    收藏  举报

导航