1128 等價多公尺諾骨牌對的數量

2021-10-17 15:35:02 字數 1514 閱讀 7017

題目描述:給你乙個由一些多公尺諾骨牌組成的列表 dominoes。

如果其中某一張多公尺諾骨牌可以通過旋轉 0 度或 180 度得到另一張多公尺諾骨牌,我們就認為這兩張牌是等價的。

形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等價的前提是 ac 且 bd,或是 ad 且 bc。

在 0 <= i < j < dominoes.length 的前提下,找出滿足 dominoes[i] 和 dominoes[j] 等價的骨牌對 (i, j) 的數量。

解題思路一:現將所有的多公尺諾骨牌都轉化為小的在前,大的在後,然後對陣列進行排序,這樣等價的多公尺諾骨牌都會放在一塊,統計每個不同的多公尺諾骨牌出現的次數即可得到等價對的數量,**如下:

class

solution

:def

numequivdominopairs

(self, dominoes: list[list[

int]])

->

int:

n =len(dominoes)

for i in

range

(n):

dominoes[i]=[

min(dominoes[i]),

max(dominoes[i])]

dominoes.sort(

) res =

0 pre = dominoes[0]

count =

1for i in

range(1

, n)

:if dominoes[i]

== pre:

count +=

1else

: res += count *

(count-1)

//2count =

1 pre = dominoes[i]

res += count *

(count -1)

//2return res

解題思路二:將多公尺諾骨牌按照小的在左大的在右的順序表示為0~99之間的乙個數,然後統計每個數次出現的次數,即可得到等價對的數量,**如下:

class

solution

:def

numequivdominopairs

(self, dominoes: list[list[

int]])

->

int:

res =

0 count =[0

]*100for do in dominoes:

val =

min(do[0]

*10+ do[1]

, do[1]

*10+do[0]

) res += count[val]

count[val]+=1

return res

1128 等價多公尺諾骨牌對的數量

給你乙個由一些多公尺諾骨牌組成的列表 dominoes。如果其中某一張多公尺諾骨牌可以通過旋轉 0 度或 180 度得到另一張多公尺諾骨牌,我們就認為這兩張牌是等價的。形式上,dominoes i a,b 和 dominoes j c,d 等價的前提是 a c 且 b d,或是 a d 且 b c。...

1128 等價多公尺諾骨牌的數量

給你乙個由一些多公尺諾骨牌組成的列表 dominoes。如果其中某一張多公尺諾骨牌可以通過旋轉 0 度或 180 度得到另一張多公尺諾骨牌,我們就認為這兩張牌是等價的。形式上,dominoes i a,b 和 dominoes j c,d 等價的前提是 ac 且 bd,或是 ad 且 bc。在 0 ...

LeetCode1128 等價多公尺諾骨牌對的數量

目錄 一 題目 二 示例 三 思路 四 給你乙個由一些多公尺諾骨牌組成的列表 dominoes。如果其中某一張多公尺諾骨牌可以通過旋轉 0 度或 180 度得到另一張多公尺諾骨牌,我們就認為這兩張牌是等價的。形式上,dominoes i a,b 和 dominoes j c,d 等價的前提是 a c...