题目
示例
给定两个大小相等的数组 nums1 和 nums2,nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。
返回 nums1 的任意排列,使其相对于 nums2 的优势最大化。
思路
贪心,遍历nums2中元素,每一次都挑选nums1剩余元素中大于nums2中元素的最小值,如果找不到大于nums2中的元素,使用nums1中剩余元素最小值代替。使用Python如果直接写双重for循环遍历寻找的话会超时,这里调入了一个Python的快速排序的列表库,减少了时间利用。
题解
# 有序列表 from sortedcontainers import SortedList class Solution: def advantageCount(self, A: List[int], B: List[int]) -> List[int]: tmp = SortedList(A) res = [] for num in B: # 寻找大于该元素的下标 index = tmp.bisect_right(num) # 如果符合条件,在tmp中删除,在答案中加上 if index < len(tmp): s = tmp.pop(index) # 找不到大于该元素的值,在tmp中删除最小的元素,在答案中加上 else: s = tmp.pop(0) res.append(s) return res