目录
一:二分查找
题目链接:
特点/解法概述:
设置一个 中间坐标变量,通过 中间变量对应的值 和 目标值 进行比较 来动态 的调整 中间坐标变量,已查找 目标值
细节/手法:
while(start<=end)
//如果使用 start!=end 会漏掉 [5] 5 的情况。循环的退出条件要仔细考虑有没有可能成立
语言知识:
题解:
class Solution {
public:
int search(vector<int>& nums, int target) {
int midum;
int start=0;
int end=nums.size()-1;
while(start<=end) //如果使用 start!=end 会漏掉 [5] 5 的情况。循环的退出条件要仔细考虑有没有可能成立
{
midum = (start +end)/2;
if(nums[midum] > target)
{
end =midum-1;
}
else if (nums[midum ]< target)
{
start = midum+1;
}
else
{
return midum;
}
}
return -1;
}
};
二:移除元素
题目链接:
特点/解法概述:
双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
细节/手法:
定义快慢指针
快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
慢指针:指向更新 新数组下标的位置
语言知识:
题解:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slow=0;
int number=nums.size();
for(int fast =0;fast<number;fast++ )
{
if( nums[fast] != val )
{
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
};