zoukankan      html  css  js  c++  java
  • 二分查找——目标值搜索(leetcode 704. 二分查找)

    本次有序的无重复数组的目标值位置索引查找的问题,利用二分查找
    二分查找的难点是:决策边界不好确定,分别采用1)左闭右开;2)左闭右闭
    判断的核心:区间范围
    左闭右开 原始的区间范围为[left, right),当判断外部循环是< 还是 <=时,考虑如下情况:
    当采用<时,跳出循环的条件时left=right,因此当时的区间范围为[left, left)
    当采用<=时,跳槽循环的条件是left=right+1, 因此当时的区间范围为[right+1, right) 存在数组越界

    左闭右闭 原始的区间范围为[left, right],当判断外部循环是< 还是 <=时,考虑如下情况:
    当采用<时,跳出循环的条件时left=right,因此当时的区间范围为[left, left],存在公共区间
    当采用<=时,跳出循环的条件是left=right+1, 因此当时的区间范围为[right+1, right]

    #左闭右开
    def query_target(list_num, target):
    left = 0
    right = len(list_num)
    while left < right:
    mid = left + int((right-left)/2)
    if list_num[mid] > target:
    right = mid #right是开区间,mid以及比较完了,当right=mid也不会比较了
    elif list_num[mid] < target:
    left = mid + 1 #left是闭区间,mid以及比较完了,所以需要加1
    else:
    return mid
    return -1

    #左闭右闭
    def query_target_2(list_num, target):
    left = 0
    right = len(list_num) - 1
    while left <= right:
    mid = left + int((right-left)/2)
    if list_num[mid] > target:
    right = mid - 1
    elif list_num[mid] < target:
    left = mid + 1
    else:
    return mid
    return -1

    """
    leetcode 704. 二分查找
    给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,
    如果目标值存在返回下标,否则返回 -1。

    示例 1:
    输入: nums = [-1,0,3,5,9,12], target = 9
    输出: 4
    解释: 9 出现在 nums 中并且下标为 4

    示例 2:
    输入: nums = [-1,0,3,5,9,12], target = 2
    输出: -1
    解释: 2 不存在 nums 中因此返回 -1
    """
    class Solution(object):
    def search(self, nums, target):
    left = 0
    right = len(nums)
    while left < right:
    mid = left + int((right - left) / 2)
    if nums[mid] == target:
    return mid
    elif nums[mid] > target:
    right = mid
    else:
    left = mid + 1
    return -1
  • 相关阅读:
    mac 终端命令
    安装和使用Carthage
    Mac下的常用终端命令与vim常用命令
    swift 获取推送deviceToken
    使mac版的MYSQL支持emoji表情
    iOS --- 通过CPU实现的简单滤镜效果
    IOS多选单选相册图片
    AVCaptureDevice iOS摄像头属性
    GPUImage 滤镜介绍
    苹果IOS开发者账号如何续费-Appstore
  • 原文地址:https://www.cnblogs.com/tomorrow-hope/p/15476585.html
Copyright © 2011-2022 走看看