702 二分查找
二分搜索法:在数组中找到target并且返回该元素的下标。
注意1: while left<right/left<=right
注意2: 更新区间值right=middle-1/middle
[left,right],[left,right)
# 左闭右闭
left = 0
right = numsize - 1
# 保证进入while区间值合法即可
while left <= right:
middle = (left+right)/2
if nums[middle]>target:
right = middle-1
elif nums[middle]>target:
left = middle
else:
return middle
return -1
**# 左闭右开**
left = 0
right = numsize
# 保证进入while区间的值合法即可
while left < right:
middle = (left+right)/2
if nums[middle]>target:
right = middle
elif nums[middle]>target:
left = middle+1
else:
return middle
return -1
相关题目:
34、找到target的初始位置和最终位置,需要建立两个二分法进行求解,二分法变体,定右取左
35
69算术平方根,次方根,看到之后利用二分法求解即可,ans记录当下的middle的值,left值作为条件
367求解一个数是否能够完全平方,利用二分法寻找
24 删除元素
**问题描述:**给定一个target,删除数组中target相等的数值
思路1: for循环遍历数组,遇到target将后边的元素对前面的元素进行覆盖。
**思路2:**双指针的思路O(n)的时间复杂度实现数组中元素的删除。
fast = 0 # 寻找新数组中所需要的元素
slow = 0 # 新数据需要更新的下标值
while fast<numszie:
# 更新新数组元素的操作
if nums[fast]!=val:
nums[slow] = nums[fast] #将快指针指向的新数组的元素赋给慢指针
slow += 1
fast += 1
return slow
相关题目:
26.删除排序数组中的重复项
283.移动零
844.比较含退格的字符串
977.有序数组的平方