代码随想录Python:704. 二分查找和27. 移除元素详解

数组是非常基础的数据结构。

数组是存放在连续内存空间上的相同类型数据的集合。

1、在进行二分查找过程中,区间的定义非常的重要。

区间一般分为两种:

  • 左闭右闭
  • 左闭右开
  • 当进行左闭右闭的区间二分查找时,代码如下:

    class Solution(object):
        def search(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: int
            """
            left = 0
            right = len(nums) - 1
            # 左闭右闭
            while left <= right:
                middle = (left + right) / 2
                if nums[middle] < target:
                    left = middle + 1
                elif nums[middle] > target:
                    right = middle - 1
                else:
                    return middle
                return -1

    当进行左闭右开的区间二分查找时,代码如下:

    class Solution(object):
        def search(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: int
            """
            left = 0
            right = len(nums) - 1
            # 左闭右开
            while left < right:
                middle = (left + right) / 2
                if nums[middle] < target:
                    left = middle + 1
                elif nums[middle] > target:
                    right = middle
                else:
                    return middle
                return -1
    

    2、在数组中进行元素移除

    双指针思路(基本了解,还需要深入学习)

    双指针分为快指针和慢指针。快指针是为了找到不需要移除的元素,慢指针是为了找到数组更新的位置。

    class Solution(object):
        def removeElement(self, nums, val):
            """
            :type nums: List[int]
            :type val: int
            :rtype: int
            """
            slow = 0
            for fast in range(len(nums)):
                if nums[fast] != val:
                    nums[slow] = nums[fast]
                    slow = slow + 1
            return slow

    物联沃分享整理
    物联沃-IOTWORD物联网 » 代码随想录Python:704. 二分查找和27. 移除元素详解

    发表评论