Medium
Advantage Shuffle — Python
Full explanation · Time O(nlogn) · Space O(n)
# Time: O(nlogn)
# Space: O(n)
class Solution(object):
def advantageCount(self, A, B):
"""
:type A: List[int]
:type B: List[int]
:rtype: List[int]
"""
sortedA = sorted(A)
sortedB = sorted(B)
candidates = {b: [] for b in B}
others = []
j = 0
for a in sortedA:
if a > sortedB[j]:
candidates[sortedB[j]].append(a)
j += 1
else:
others.append(a)
return [candidates[b].pop() if candidates[b] else others.pop()
for b in B]