Day1.二分法

1.寻找一个数

# 注意:python 代码由 chatGPT🤖 根据我的 java 代码翻译,旨在帮助不同背景的读者理解算法逻辑。
# 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 java 代码对比查看。

# LeeCode解法
# 二分查找 - Python代码

def binarySearch(nums:List[int], target:int) -> int:
    left = 0; 
    right = len(nums) - 1; # 注意

    while(left <= right):
        mid = left + (right - left) // 2; # 防止整型溢出
        if(nums[mid] == target):
            return mid; 
        elif(nums[mid] < target):
            left = mid + 1; # 注意
        elif(nums[mid] > target):
            right = mid - 1; # 注意

    return -1;


 

2.寻找一个边界

左侧边界:

# 注意:python 代码由 chatGPT🤖 根据我的 java 代码翻译,旨在帮助不同背景的读者理解算法逻辑。
# 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 java 代码对比查看。

def left_bound(nums: List[int], target: int) -> int:
    left = 0
    right = nums.length; # 注意
    
    while left < right: # 注意
        mid = left + (right - left) // 2
        if nums[mid] == target:
            right = mid
        elif nums[mid] < target:
            left = mid + 1
        elif nums[mid] > target:
            right = mid; # 注意

    return left

右侧边界

# 注意:python 代码由 chatGPT🤖 根据我的 java 代码翻译,旨在帮助不同背景的读者理解算法逻辑。
# 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 java 代码对比查看。

def right_bound(nums, target):
    left, right = 0, len(nums)
    while left < right:
        mid = left + (right - left) // 2
        if nums[mid] == target:
            left = mid + 1 # 注意
        elif nums[mid] < target:
            left = mid + 1
        elif nums[mid] > target:
            right = mid
    return left - 1 # 注意

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我明白了。我来依次回答你的三个问题: 15. 二分法编程 二分法是一种高效的查找算法,可以在一个有序的数组中找到指定的元素。它的基本思想是:每次将查找范围缩小一半,直到找到目标元素或者查找范围为空。下面是一个用 Python 实现的二分查找函数: ```python def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: left = mid + 1 else: right = mid - 1 return -1 ``` 这个函数接受一个有序数组和一个目标元素作为输入,返回目标元素在数组中的下标(如果存在),如果目标元素不存在于数组中,则返回 -1。 16. 设计用例:年月日,输入和输出结果 下面是一个关于年月日的输入输出用例: 输入: ``` year = 2021 month = 8 day = 1 ``` 输出: ``` weekday = "Sunday" ``` 这个用例的目的是计算给定日期的星期几。在这个用例中,输入参数 year、month 和 day 表示要计算的日期,输出参数 weekday 表示该日期对应的星期几。 17. 设计用例:一个车载 APP,可以使用支付宝,余额宝,银行卡,储蓄卡支付,用户自定义顺序支付等,写出测试点 下面是一些关于车载 APP 支付功能的测试点: 1. 测试支付宝支付功能是否正常,包括支付金额、支付账号、支付密码等。 2. 测试余额宝支付功能是否正常,包括支付金额、支付密码等。 3. 测试银行卡支付功能是否正常,包括支付金额、银行卡号、CVV 号、有效期等。 4. 测试储蓄卡支付功能是否正常,包括支付金额、储蓄卡号、密码等。 5. 测试用户自定义顺序支付功能是否正常,包括支付方式顺序、支付金额、支付密码等。 6. 测试支付过程中异常情况的处理,如支付失败、支付超时、支付密码错误等。 7. 测试支付记录的查询功能是否正常,包括查询支付记录、支付状态、支付时间等。 8. 测试支付退款功能是否正常,包括退款金额、退款账号等。 9. 测试支付安全性功能是否正常,包括支付密码是否加密、支付过程是否受到保护等。 10. 测试支付界面的用户友好性,包括支付界面设计、支付流程是否简洁明了等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值