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
网友评论