📅  最后修改于: 2023-12-03 14:54:42.493000             🧑  作者: Mango
给定一个有序数组和一个字符K,找出数组中最接近K并且比K小的字符。如果不存在这样的字符,则返回数组中最小的字符。
输入:arr = ['a', 'c', 'f', 'h', 'j'], k = 'd'
输出:'c'
输入:arr = ['a', 'c', 'f', 'h', 'j'], k = 'k'
输出:'j'
这是一道比较简单的题目,可以使用二分查找法求解。具体如下:
def findClosestChar(arr, k):
if arr[0] > k:
return arr[0]
if arr[-1] < k:
return arr[-1]
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == k:
return arr[mid - 1]
elif arr[mid] > k:
right = mid - 1
else:
left = mid + 1
return arr[left - 1]