码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-Search a 2D Matrix II-240

时间:2016-09-03 22:19:18      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

输入一个矩阵,其中每一行递增,每一列递增,要求设计一个高效的算法判断target是否在矩阵中

递增,所以二分,lgM*lgN

总体来说就是从右上角往下找到左下角

 1 class Solution {
 2 public:
 3     bool searchMatrix(vector<vector<int> >& matrix, int target) {
 4         int m=matrix.size();
 5         if(m==0) return false;
 6         int n=matrix[0].size();
 7         int b1=n-1;
 8         int ok=1;
 9         int l,r;
10         int a1=0;
11         while(1){
12             if(ok){
13                 ok=0;
14                 l=0,r=b1;
15                 b1=-1;
16                 while(l<=r){
17                     int mid=(l+r)>>1;
18                     int tmp=matrix[a1][mid];
19                     if(tmp==target) return true;
20                     if(tmp<target){
21                         b1=mid;
22                         l=mid+1;
23                     }
24                     else r=mid-1;
25                 }
26                 if(b1==-1) return false;
27             }
28             else{
29                 ok=1;
30                 l=a1,r=m-1;
31                 a1=-1;
32                 while(l<=r){
33                     int mid=(l+r)>>1;
34                     int tmp=matrix[mid][b1];
35                     if(tmp==target) return true;
36                     if(tmp>target){
37                         a1=mid;
38                         r=mid-1;
39                     }
40                     else l=mid+1;
41                 }
42                 if(a1==-1) return false;
43             }
44         }
45         return false;
46     }
47 };

 

leetcode-Search a 2D Matrix II-240

标签:

原文地址:http://www.cnblogs.com/0summer/p/5838063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!