題目描述:給你乙個由一些多公尺諾骨牌組成的列表 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...