代码随想录day1|数组和二分查找

本文介绍了二分查找算法在数组中的应用,包括找到目标元素的下标,以及相关变体问题如寻找目标的初始和最终位置。此外,还讨论了如何使用双指针删除数组中特定元素的方法,提供了一种O(n)时间复杂度的解决方案。
摘要由CSDN通过智能技术生成

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.有序数组的平方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值