演算法題 等價多公尺諾骨牌對的數量

2022-06-29 05:06:09 字數 756 閱讀 4320

給你乙個由一些多公尺諾骨牌組成的列表 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) 的數量。

示例:輸入:dominoes = [[1,2],[2,1],[3,4],[5,6]]

輸出:1

1 <= dominoes.length <= 40000

1 <= dominoes[i][j] <= 9

可以用雙重遍歷去乙個個比較,但實際測試超時。可以考慮對「等價的骨牌」作hash處理,由於每個數值都是1~9,故可將兩個數分別存為乙個兩位數的十位和個位,此時hash表的長度為100.

由於等價骨牌有兩種形式,故需可將小的放前面或大的放前面進行統一

class solution  else 

map[m]++;

}int res = 0;

for (int i = 0;i < 100;i++)

}return res;

}};

複雜度

時間複雜度:o(n)

空間複雜度:o(100)

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

這一題應該用二元組表示 計數的方法,既然是二元組,我們可以不妨直接讓每乙個二元對都變為指定的格式,即第一維必須大於第二維。這樣兩個二元對 等價 當且僅當兩個二元對完全相同。注意到二元對中的元素均不大於 99,因此我們可以將每乙個二元對拼接成乙個兩位的正整數,即 x,y 10x y。這樣就無需使用雜湊...

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...