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
  • 相关阅读:
    (绝对有用)iOS获取UUID,并使用keychain存储
    宏定义判断设备是否是iphone5
    如何在未越狱iOS设备上安装IPA
    制作iOS Ad-Hoc测试应用
    UIWebView中Html中用JS调用OC方法及OC执行JS代码
    ios开发入门- plist 文件读写
    [iOS] 如何将你的程序打包成ipa
    《网络对抗技术》Exp1 PC平台逆向破解——20181308邵壮
    公文传输系统冲刺总结——Day3
    MyOD实验 20181308
  • 原文地址:https://www.cnblogs.com/tomorrow-hope/p/15476585.html
Copyright © 2011-2022 走看看