代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

704 二分查找

力扣

感觉利用左开右闭区间更容易理解,编程过程中遇到mid溢出问题,需要注意

class Solution:

    def search(selfnums: List[int], targetint) -> int:

        left=0

        right=len(nums)

        while left<right:

            middle=(left+right)//2(会有Middle溢出问题,改为left+(right-left)//2

            if target<nums[middle]:

                right=middle

            if target>nums[middle]:

                left=middle+1

            else:

                return middle

        return -1   

27题  移除元素

力扣

27题

class Solution:

    def removeElement(selfnums: List[int], valint) -> int:

        fast=0

        slow=0

        while fast<len(nums):

            if nums[fast]!=val:

                nums[slow]=nums[fast]

                slow+=1

            else:

fast+=1(有错误,无论什么情况,fast都要加1,因此不应该放到else后面)

        return slow

283 移动零

力扣

明确需要依靠双指针,但一直在思考利用双指针把0和非0元素调换位置,若fast=0,而fast+1不为0,则 temp=slow,slow=fast,fast=temp ,发觉很麻烦,利用移除0,然后在slowindex后面补齐0,这个思路很简单。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值