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

704 二分查找

题目链接

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

1.left<=right,因为是左闭右闭
2.找不到需要return -1
3.在c++中left+right可能溢出,left + ((right - left) >> 1)即可

27 移除元素(快慢指针)

题目链接

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        # 快慢指针
        fast = 0  # 快指针
        slow = 0  # 慢指针
        size = len(nums)
        while fast < size:  # 不加等于是因为,a = size 时,nums[a] 会越界
            # slow 用来收集不等于 val 的值,如果 fast 对应值不等于 val,则把它与 slow 替换
            if nums[fast] != val:
                nums[slow] = nums[fast]
                slow += 1
            fast += 1
        return slow

1.是while fast 2.是nums[slow] = nums[fast],不是把slow+1的数移到slow上

你可能感兴趣的:(python,算法)