Даны два массива:
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)
в вашем примере? - person Daniel Jour   schedule 09.10.2016@
уведомит человека, к которому вы обращаетесь. В противном случае комментарий, подобный вашему выше, может остаться незамеченным) - person Marco13   schedule 10.10.2016