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