在有序列表中获取唯一相邻整数的 Pythonic 方法

标签 python loops search integer

给定一个有序整数列表,返回小于 N 的最大整数和大于 N 的最小整数。 如果没有,则打印“X”。

最佳答案

据我所知,这是最快的解决方案。

def binary_search(arr, x):
    low = 0
    high = len(arr) - 1
    mid = 0
    lm = -1
    while low <= high:
        lm = mid
        mid = (high + low) // 2
        if arr[mid] < x:
            low = mid + 1
        elif arr[mid] > x:
            high = mid - 1
        else:
            return mid
        if lm == mid:break
    return mid

def find_next_bigger(arr,n,i):
    while i < len(arr):
          if arr[i] > n:
              return arr[i]
          i += 1
    return arr[i] if i < len(arr) else "X"

def find_next_smaller(arr, n,i):
        while i >= 0:
            if arr[i] < n:
                return arr[i]
            i -= 1
        return arr[i] if i > 0 else "X"

def solution(arr, n):
    if n > arr[-1]:
        return arr[-1], "X"
    if arr[0] > n:
          return "X", arr[0]
    i = binary_search(arr, n)
    bigger = find_next_bigger(arr, n, i)
    smaller = find_next_smaller(arr,n,i)
    return smaller, bigger

关于在有序列表中获取唯一相邻整数的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64964821/

相关文章:

python - 使用 Python api 客户端在 Google Cloud Storage Bucket 中提取 zip 存档

python - 多线程中的 Tornado 多个 IOLoop

计算字符 - 文件的高度和长度 - C 编程

php搜索引擎脚本

python - 我可以在输入语句中使用变量吗?

python - 没有分配的列表理解

php - 如何在没有警告的情况下循环此数组

python遍历列表列表

javascript - jQuery 自动完成(devbridge)lookupFilter 搜索多个属性

c++ - 是否有用于文件搜索的跨平台/C++ 库? (在硬盘上)