leetcode_Search a 2D Matrix
2016-05-26 11:29
411 查看
题意:在一个排序好的二维数组里,找出指定元素
注意:二分查找的“模板”,每一个细节都要注意。 bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m,n,i,j,k,left=0,right=0,middle=0;
if(matrix.size()==0) return false;
m=matrix.size();
n=matrix[0].size();
left=0;
right=matrix.size()-1;
while(left<right)
{
middle=(left+right)/2;
if(matrix[middle][0]<=target&&matrix[middle+1][0]>target) break;
if(matrix[middle][0]<target) left=middle+1;
else right=middle-1;
}
if(left==m-1 ||matrix[left][0]<=target&&matrix[left+1][0]>target) middle=left;
left=0;
right=n-1;
i=middle;
while(left<right)
{
middle=(left+right)/2;
if(matrix[i][middle]==target) return true;
if(matrix[i][middle]<target) left=middle+1;
else right=middle-1;
}
if(matrix[i][left]==target) return true;
return false;
}
注意:二分查找的“模板”,每一个细节都要注意。 bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m,n,i,j,k,left=0,right=0,middle=0;
if(matrix.size()==0) return false;
m=matrix.size();
n=matrix[0].size();
left=0;
right=matrix.size()-1;
while(left<right)
{
middle=(left+right)/2;
if(matrix[middle][0]<=target&&matrix[middle+1][0]>target) break;
if(matrix[middle][0]<target) left=middle+1;
else right=middle-1;
}
if(left==m-1 ||matrix[left][0]<=target&&matrix[left+1][0]>target) middle=left;
left=0;
right=n-1;
i=middle;
while(left<right)
{
middle=(left+right)/2;
if(matrix[i][middle]==target) return true;
if(matrix[i][middle]<target) left=middle+1;
else right=middle-1;
}
if(matrix[i][left]==target) return true;
return false;
}
相关文章推荐
- 21V版Office365 管理界面更新
- 【算法题】Leedcode 72
- Xcode那些错
- 设计模式:简单工厂模式
- LeetCode 198: House Robber
- php查询小知识
- cssViewer牛逼的chrome插件
- 集成Spring web.xml配置总结
- 选择年份 php的写法要比js简洁一些
- serialVersionUID的作用
- Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wildcard is stri
- java设计六大原则之开闭原则(OCP)
- Spring面试问答Top 25
- 将CSV文件导入到hive数据库
- 手把手教你实现折线图之------安卓最好用的图表库hellocharts之最详细的使用介绍
- 【图像处理】Haar Adaboost 检测自定义目标(视频车辆检测算法代码)
- RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的简单介绍
- C++11新特性emplace操作
- jquery实现复选框案例
- 欢迎使用CSDN-markdown编辑器