給定兩個數組中的元素:數滿足關係
2 5 6 4 3 7 1
5 1 6 2 3 7 4
計數數量的元件x, y
滿足該x
是在兩個陣列y
之前的狀態。
迄今取得的進展:
排序陣列通過它們的索引。例如,這將是:
object: 1 2 3 4 5 6 7
indexes in the first array: 6 0 4 3 1 2 5
indexes in the secnod array: 1 3 4 6 0 2 5
並將每個元組與另一個元組進行比較。如果元組a
的索引低於或高於元組b
,則增加滿足條件的元素數。
這具有(N^2)/ 2的時間複雜度,所以O(N^2)太慢了。我明白,沒有更好的最壞情況複雜性,但我最感興趣的是平均結果。所以:有更好的方法/算法嗎?
我想過使用傳遞屬性(如果(x,y)
和(y,z)
滿足條件,那麼(x,z)
也滿足),但沒有運氣。
測試用例
對於數組:
2 5 6 4 3 7 1
5 1 6 2 3 7 4
滿足條件的對是:
(5,1) (2,3) (2,4) (2,7) (5,3) (6,3) (3,7) (5,4) (6,4) (5,6) (5,7) (6,7)
對於數組:
1 2 3 4 5 6 7
1 2 3 4 5 6 7
滿足條件的對是:
(1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (2,3) (2,4) (2,5) (2,6) (2,7) (3,4) (3,5) (3,6) (3,7) (4,5) (4,6) (4,7) (5,6) (5,7) (6,7)
'(x,y)'在你的例子中取值爲(2,5),(5,1),...,(1,4)'? –
在第一個數組2中是在5之前,但在接下來的5中是在2.(5,1)之前的方式,但是是真的。 (1,4)不是。 (6,7),(5,6)等是正確的。 – FigsHigs
啊,好的。你有很多測試用例嗎? –