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]
上一篇下一篇

猜你喜欢

热点阅读