Ho provato ad accorciare la mia domanda, ma questo è il meglio che potrei fare. Dal Credo che sia piuttosto difficile da capire che cosa ho bisogno, fornirò un esempio:Il modo più efficace per rilevare e rimuovere elementi nell'array in base al valore e all'ultimo valore degli elementi
Dire che ho il seguente array:
$var = array(
array(1, 2, 3),
array(1, 3),
array(1, 2, 4, 3),
array(1, 3, 4)
);
Quello che voglio è quello di rimuovere tutte le matrici da $var
che hanno la il primo e l'ultimo elemento sono gli stessi di un altro array da $var
ma hanno più elementi rispetto al secondo.
Quindi, le seguenti matrici deve essere rimosso: (1, 2, 3)
e (1, 2, 4, 3)
perché entrambi iniziare e terminare con 1
3
e avere più elementi di (1, 3)
, che inizia e termina anche con 1
e 3
. (1, 3, 4)
dovrebbe rimanere, perché non c'è nessun altro array che inizia con 1
e termina con 4
e ha meno elementi di esso.
Sto cercando il modo più efficiente per farlo, sia in termini di memoria che di tempo. $var
può contenere fino a 100 matrici e ogni singolo array può contenere fino a 10 elementi. Ho pensato di utilizzare una sorta di confronto tra tutti e due gli elementi (for(i=0;...) for(j=i+1;...) complexCompareFunction();
), ma credo che non sia molto efficiente.
Avete un caso d'uso per quello che stai cercando di fare? Potrebbe esserci un modo migliore per implementarlo ... – Josh
Sto generando tutte le combinazioni di linee di trasporto pubblico che collegano due posizioni selezionate dall'utente. Dalla serie di combinazioni di linee generate ('$ var' in questo caso), vorrei eliminare quelle che usano una linea aggiuntiva. Quindi, se si può raggiungere il secondo punto con le righe '(1, 3)', perché dovrebbe essere visualizzato anche '(1, 2, 3)'? Qui, la riga '2' è extra, si può raggiungere la destinazione senza di essa. – linkyndy
forse viaggiare 1,2,3 richiederà meno tempo (perché vai in treno) di 1,3 (perché puoi andare solo in autobus direttamente). potremmo ricostruire il problema: avere un grafico con stazioni come nodi e connessioni come bordi. per ogni due nodi n, m ora cerchi il percorso più breve che inizia con n e termina con m. ci sono tonnellate di riferimenti là fuori su questo argomento. – Basti