二分
class Solution {
public:
int search(vector<int> vt,int target,bool& tag)
{
int l=0,r=vt.size()-1;
tag=false;
if(target<vt[l])
return -1;
while(l<=r)
{
int mid=(l+r)>>1;
if(vt[mid]<target)
l=mid+1;
else if(vt[mid]>target)
r=mid-1;
else
{
tag=true;
return mid;
}
}
return r;
}
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int n=matrix.size();
vector<int> vi;
for(int i=0;i<n;i++)
vi.push_back(matrix[i][0]);
bool tag=false;
int ind=search(vi,target,tag);
if(tag)
return true;
if(ind==-1)
return false;
search(matrix[ind],target,tag);
return tag;
}
};
本文介绍了一种使用二分搜索算法查找目标值的方法,并通过一个具体的C++代码示例展示了如何在一维和二维数组中应用该算法。文章首先定义了一个Solution类,其中包含了用于一维数组搜索的search函数和用于二维数组(矩阵)搜索的searchMatrix函数。
610

被折叠的 条评论
为什么被折叠?



