二分查找
要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。
例题
704. 二分查找
思路:单纯的二分查找
这里使用左闭右闭区间。
int search(vector<int>& nums, int target) {
int l = 0, r = nums.size()-1;
while(l<=r){
int mid = (l+r)/2;
if(nums[mid]>target) r = mid-1;
else if(nums[mid]<target) l = mid+1;
else return mid;
}
return -1;
}
27. 移除元素
思路:快慢指针
如果 fast
遇到需要去除的元素,则直接跳过,否则就告诉 slow
指针,并让 slow
前进一步。
int removeElement(vector<int>& nums, int val) {
int slow = 0, fast = 0;
while(fast<nums.size()){
if(nums[fast]!=val){
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
标签:二分,slow,nums,int,fast,day1,查找
From: https://www.cnblogs.com/gatzzzze/p/16717315.html