代码随想录算法训练营第一天|704.二分查找,35.搜索插入位置,34.在排序数组中查找元素的第一个和最后一个位置,27.移除元素

704.二分查找

文章讲解

思路:注意题目中的有序+无重复元素,尤其是有序。1. 确定区间(左闭右闭/左闭右开)2. 根据区间开闭确定初始范围,要包含n个数。3. 根据区间开闭确定while中为</<=。4. 根据区间开闭确定收缩条件(right=mid - 1/right=mid)

35.搜索插入位置

思路:有序+无重复->二分法。1. 确定区间(左闭右闭/左闭右开)2. 根据区间开闭确定初始范围,要包含n个数。3. 根据区间开闭确定while中为</<=。4. 根据区间开闭确定收缩条件(right=mid - 1/right=mid)。5. 根据区间开闭确定当目标值不存在于数组的情况下while循环结束时left和right的位置,并注意数组索引从0开始。

34.在排序数组中查找元素的第一个和最后一个位置

思路:有序-》二分法,由于看到该题为有序,思路为利用二分法找到目标值,并从该目标值左右探索到边界即为所求。1. 确定区间(左闭右闭/左闭右开)2. 根据区间开闭确定初始范围,要包含n个数。3. 根据区间开闭确定while中为</<=。4. 根据区间开闭确定收缩条件(right=mid - 1/right=mid)。5. 找到目标值后通过while左右探索到边界,注意限制探索过程corner case。

备注:答案的双二分法看了一遍思路,但是没有手写

27.移除元素

文章讲解

思路:

暴力法要注意数组更新后索引和数组size的减小,因为该减小第二遍遍历时不能增加索引限制。1. 外循环遍历。2. 找到目标值进入内循环,将该值往后的数前移一位。3. 外循环索引和遍历减1。

双指针法将right从左侧右移遍历,找到与val不同的值即放入left中,left右移。该题return数字i即返回数组前i位

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值