题目链接704. 二分查找 - 力扣(LeetCode)
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
int mid = (right - left) / 2;
while (left <= right)
{
if (target == nums[mid])
{
return mid;
}
else if (target < nums[mid])
{
right = mid - 1;
}
else {
left = mid + 1;
}
mid = (right - left) / 2+left;
}
return -1;
}
题目链接27. 移除元素 - 力扣(LeetCode)
int removeElement(vector<int>& nums, int val) {
if(nums.size()==0)
{
return 0;
}
int left = 0;
int right = nums.size() - 1;
int count = 0;
while (left < right) {
while (right>0&&nums[right] == val) {
right--;
}
while (left<nums.size()&&nums[left] != val) {
left++;
}
if (left < right) {
swap(nums[left], nums[right]);
}
}
int i = 0;
for(auto e:nums)
{
if(e!=val)
{
count++;
}
}
return count;
}
最后
要注意数组边界是否越界,还有熟练掌握双指针,多考虑一下测试用例的极端情况,比如传入为空之类的,太久没有写题了手太生了,希望能坚持下去,加油