Я попытался сократить свой вопрос, но это лучшее, что я мог делать.Поскольку мне кажется, что довольно сложно понять, что мне нужно, я приведу пример:
Допустим, у меня есть следующий массив:
$var = array(
array(1, 2, 3),
array(1, 3),
array(1, 2, 4, 3),
array(1, 3, 4)
);
Я хочу удалить все массивы из $ var
, которые имеют первый и последний элементы такие же, как другой массив из $ var
, но имеют больше элементов, чем последний.
Итак, следующие массивы должны быть удалены: (1, 2, 3)
и (1, 2, 4, 3)
, потому что оба они начинаются с 1
и заканчиваются на 3
и содержат больше элементов, чем (1, 3)
, который также начинается и заканчивается на 1
и 3
]. (1, 3, 4)
должен остаться, потому что нет другого массива, который начинается с 1
и заканчивается на 4
и имеет меньше элементов.
Я ищу наиболее эффективный способ сделать это, как с точки зрения памяти, так и времени. $ var
может иметь до 100 массивов, и каждый отдельный массив может содержать до 10 элементов. Я подумал об использовании какого-то сравнения между всеми двумя элементами ( for (i = 0; ...) for (j = i + 1; ...) complexCompareFunction ();
), но я считаю это не очень эффективно.