leetcode 870 优势洗牌
2020-01-24 本文已影响0人
Arsenal4ever
这题和田忌赛马一样,但卡了我好久,难在了数据结构的设计。如果只用字典保留原来的顺序,值相同则会错误,要用字典+列表组合的方式。
class Solution(object):
def advantageCount(self, A, B):
"""
:type A: List[int]
:type B: List[int]
:rtype: List[int]
"""
assigned={b:[] for b in B}
sortedB, sortedA, remaining = sorted(B),sorted(A),[]
j = 0
for a in sortedA:
if a > sortedB[j]:
assigned[sortedB[j]].append(a)
j+=1
else:
remaining.append(a)
return [assigned[b].pop() if assigned[b] else remaining.pop() for b in B]