Memory刷题day1

LeetCode刷题笔记:二分查找与移除元素
文章详细介绍了两种二分查找的实现方式——左闭右闭和右闭右开,以及如何在给定列表中使用快慢指针移除特定元素的方法。这些是算法题目的常见解决方案,旨在复习和巩固编程技巧。

704二分查找(简单)

1. 左闭右闭

题目链接:https://leetcode.cn/problems/binary-search/

    def search(self, nums: List[int], target: int) -> int:
        left = 0
        right = len(nums)-1
        while left<right:
            mid = left +(right-left)//2
            if nums[mid] < target:
                left=mid+1
            elif nums[mid] > target:
                right=mid-1
            else:
                return mid
        return -1

右边界赋值:right=len(nums)-1,right=mid-1

2. 右闭右开

    def search(self, nums: List[int], target: int) -> int:
        left = 0
        right = len(nums)
        while left<right:
            mid = left +(right-left)//2
            if nums[mid] < target:
                left=mid+1
            elif nums[mid] > target:
                right=mid
            else:
                return mid
        return -1

右边界赋值:right=len(nums),right=mid

27移除元素(简单)

题目链接:https://leetcode.cn/problems/remove-element/

    def removeElement(self, nums: List[int], val: int) -> int:
        left=0
        right=0
        _len=len(nums)
        while right<_len:
            if nums[right]==val:
                right+=1
            else:
                nums[left]=nums[right]
                left+=1
                right+=1
        return left   

快慢指针,用右边指针去遍历所有元素,左边指针来计数。

总结:

由于以前已经刷过一遍[代码随想录]了,这次报名就是想办法监督自己刷题,复习一下算法知识!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值