首页 > 代码库 > leetcode-Search a 2D Matrix II-240

leetcode-Search a 2D Matrix II-240

输入一个矩阵,其中每一行递增,每一列递增,要求设计一个高效的算法判断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