📅  最后修改于: 2023-12-03 15:40:47.917000             🧑  作者: Mango
给定一个长度为n的数组,找出这个数组中满足以下条件的最小字符:
给定数组 arr = [1,5,2,3], 下标范围 [1,3]
遍历找到下标范围内的所有节点,然后取其中 最小的满足条件的节点 就行了。
具体的,对于每个节点,需要判断该节点是否满足条件。首先,该节点的值必须在[low, high]这个范围之间。其次,如果该节点之前有更小的节点的话,则当前节点不符合条件。最后,比较下目前满足条件的最小节点即可。
def find_smallest_char(arr, low, high):
smallest_char = None
for i in range(low, high + 1):
if arr[i] in arr[low:i]:
continue
if smallest_char is None or arr[i] < smallest_char:
smaller_exist = False
for j in range(low, i):
if arr[j] <= arr[i]:
smaller_exist = True
break
if not smaller_exist:
smallest_char = arr[i]
return smallest_char
该方法遍历输入数组,算法复杂度为O(n^2)。实际结果比较难以确定,但在极端情况下,当low和high都为0时,复杂度最高。
需要注意的是,该算法针对的是小数据集,如果输入数据较大,引入哈希表、堆等数据结构进行优化可能会更好。