首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。