1.第一个大于目标值的元素
public int Search(int[] num,int target)
{
int left=0;
int right=num.Length-1;
while(left<=right)
{
int mid=((right-left)>>1)+left;
if(num[mid]<=target)
{
left=mid+1;
}
else if(num[mid]>target)
{
right=mid-1;
}
}
if(left<=num.Length-1 && num[left]>target)
{
return left;
}
return -1;
}
2.第一个小于目标值的元素
public int Search(int[] num,int target)
{
int left=0;
int right=num.Length-1;
while(left<=right)
{
int mid=((right-left)>>1)+left;
if(num[mid]<target)
{
left=mid+1;
}
else if(num[mid]>=target)
{
right=mid-1;
}
}
if(right>=0 && num[right]<target)
{
return right;
}
return -1;
}
3.第一个小于等于目标值的元素
public int Search(int[] num,int target)
{
int left=0;
int right=num.Length-1;
while(left<=right)
{
int mid=((right-left)>>1)+left;
if(num[mid]<=target)
{
left=mid+1;
}
else if(num[mid]>target)
{
right=mid-1;
}
}
if(right>=0 && num[right]<=target)
{
return right;
}
return -1;
}
4.第一个大于等于目标值的元素
public int Search(int[] num,int target)
{
int left=0;
int right=num.Length-1;
while(left<=right)
{
int mid=((right-left)>>1)+left;
if(num[mid]<target)
{
left=mid+1;
}
else if(num[mid]>=target)
{
right=mid-1;
}
}
if(left<=num.Length-1 && num[left]>=target)
{
return left;
}
return -1;
}