Sto cercando il modo più veloce per decidere se un punto su una linea è o meno all'interno di un sottoinsieme di questa linea. mi viene data un punto intero, e ho anche una "lista" di entrambi:Come trovare se un punto si trova all'interno di un set di intervalli?
- Punti, rappresentata da un numero intero (3, 10, 1000, ecc)
- intervalli, che rappresento da 2 interi (2:10 è tutti i numeri interi da 2 a 10 inclusi.Possono, 50:60, ecc)
in questo esempio, se il valore del mio punto è 5, allora torno vero perché è incluso in un intervallo , lo stesso per 55. Se il mio punto è uguale a 1000, restituisco anche true perché corrisponde all'elenco di punti.
Sto cercando un modo veloce (più veloce di lineare) per verificare questa condizione, SENZA dover instanciare il numero intero come molti punti possibili (ad esempio, per un intervallo di 1: 1000 non desidero instanciare 1000 interi). Questo può essere fatto in un tempo logaritmico?
Grazie
edit: si può considerare che qualsiasi tempo necessario per pre-processo l'elenco dei dati è uguale a 0, perché una volta che i miei intervalli iniziali vengono elaborati ho bisogno di applicare questo test per 10k punti
gli intervalli possono sovrapporsi? Non so se questo è importante, ma sembra che dovrebbe. – Almo
potrebbero, ma posso pre-elaborare i miei dati in modo che non lo facciano più, il che non rappresenta un problema in termini di tempo perché sto usando gli stessi intervalli per elaborare i 10k punti – lezebulon
Sono ordinati? – Freddy