力扣704
题目链接:
class Solution {
public:
int search(vector<int>& nums, int target)
{
int left=0,right=nums.size()-1;
while(left<=right)
{
int mid=(right-left)/2+left;
if(nums[mid]>target)
right=mid-1;
else if(nums[mid]<target)
left=mid+1;
else
return mid;
}
return -1;
}
};
区分好区间,左闭右开范围不包括右端,left=right没有意义,right应当从mid选取,因为取不到该值。
力扣27:
题目链接 :力扣
class Solution {
public:
int removeElement(vector<int>& nums, int val)
{
int left=0;
int right=nums.size()-1;
while(left<=right){
while(nums[left]<nums.size()&&nums[left]!=val)
{
left++;
}
while(nums[right]<nums.size()&&nums[right]==val)
{
right--;
}
if(left<right)
nums[left++]=nums[right--];
}
return left;
}
};
双指针以及相关的题目联系