因为有认真学过二分查找,所以很容易就做出来了。
核心代码:
int BinarySearch(int mid,int left,int right,int target){
left=0, right=numsSize-1;
while( left <= right){
if(target > nums[mid])
left = mid+1; //更新左下标,移至右区间查找
else if(target < nums[mid])
right = mid-1; //更新右下标,移至左区间查找
else
return mid; //找到了
}
}
有暴力和双指针两种写法,我先写双指针明天好好补充
思路:双指针就是一个快指针fast、一个慢指针slow。fast用来比对现在所指元素是否能保留,慢指针用来记录满足条件可以保留的元素。移动操作:当快指针所指元素满足保留条件时,将快指针所指元素赋值给慢指针,并且快指针慢指针都向后移,继续查找比对保留;当快指针所指元素不满足保留条件时,仅移动快指针,继续向后查找比对。