Самый эффективный способ обнаружения и удаления элементов в массиве на основе первого и последнего значения элементов

Я попытался сократить свой вопрос, но это лучшее, что я мог делать.Поскольку мне кажется, что довольно сложно понять, что мне нужно, я приведу пример:

Допустим, у меня есть следующий массив:

$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 (); ), но я считаю это не очень эффективно.

6
задан linkyndy 21 February 2012 в 20:15
поделиться