📅  最后修改于: 2023-12-03 15:06:18.042000             🧑  作者: Mango
本文介绍的算法是将第二个数组中的每个元素从第一个数组中查找比其严格更大的元素。具体来说,我们会对第一个数组进行排序,然后对第二个数组中的每个元素以二分查找的方式在第一个数组中查找比其严格更大的元素。
import bisect
def find_greater_elements(nums1, nums2):
nums1_sorted = sorted(nums1)
res = []
for n in nums2:
i = bisect.bisect_right(nums1_sorted, n)
if i != len(nums1_sorted):
res.append(nums1_sorted[i])
else:
res.append(-1)
return res
其中,bisect.bisect_right(nums1_sorted, n)
函数用于找到第一个大于n的元素在nums1_sorted中的位置。如果找到了这个位置,说明存在比n更大的元素;否则返回-1。
print(find_greater_elements([4,1,2], [1,3,4,2])) # 输出[-1, 4, -1, 4]
以上示例的意思是,在第一个数组[4, 1, 2]中,4是最大的元素,2是有比其严格更大的元素。第二个数组[1, 3, 4, 2]分别对应查找的元素,分别得到[-1, 4, -1, 4]。其中,-1表示没有比其严格更大的元素。