leetcode 1128. 等价多米诺骨牌对的数量

2020-03-17  本文已影响0人  fanchuang
class Solution:
    def numEquivDominoPairs(self, dominoes: List[List[int]]) -> int:
        # 会不会出现这样的牌  [4,6] [5, 7]   假设不会出现。怎么做呢?
        # 事实上 是会出现的 测试用例第8 / 19 个  [9,6],[1,3],[9,7],[4,7],
      
        # 下面这句才是最有意思的。
        dominoes.sort(key=lambda x: (sum(x), min(x)))

        ret = 0
        flag = False    # 表示的是连续找到相等的。
        accu = 2
        for i in range(len(dominoes)-1):
            # 这里面有一个问题 就是累加性。。。3个连续成立的,最终可以组成3对,而不是2对。
            if dominoes[i] == dominoes[i+1] or dominoes[i] == dominoes[i+1][::-1]:
                if flag:
                    ret += accu
                    accu += 1
                else:
                    ret += 1
                    flag = True
                    accu = 2
                # print("find one: ", dominoes[i], dominoes[i + 1])
            else:
                flag = False
                accu = 0
        return ret 
上一篇下一篇

猜你喜欢

热点阅读