LeetCode 870
这个问题要返回的是任意一个组合,那么我们考虑,如果我们每次都用最小的大于第二个数组的位置的数就可以,那么可以用二分查找来做。
def advantageCount(self, A: List[int], B: List[int]) -> List[int]:
if A == None or B == None: return None
A = sorted(A)
result = list()
for b in B:
pos = bisect.bisect_right(A, b)
if pos >= len(A): pos = 0
if A[pos] == B: pos +=1
result.append(A[pos])
A.pop(pos)
return result