代码随想录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

你可能感兴趣的:(算法,数据结构)