Questa domanda esiste solo per pura curiosità. Non è un compito a casa.Il modo più veloce per trovare 2 numeri mancanti in un array
trovare il modo più veloce per trovare due numero mancante in un array 1..n
Così, in un post correlati: Quickest way to find missing number in an array of numbers ho scoperto che si può fare questo abbastanza rapidamente sommando e sottraendo totale.
ma che dire di 2 numeri?
Quindi, le nostre opzioni sono:
- La ricerca sequenziale
- Riassumendo articoli, sottraendo dal totale per tutti gli elementi da 1..n, quindi la ricerca tutti i casi possibili.
C'è altro? Possibile avere la soluzione O (n)? Ho trovato questo nella sezione rubino di uno dei siti web, ma qualsiasi lingua è considerata (a meno che non ci siano alcune cose specifiche per una lingua)
Si può semplicemente ordinare l'array, che può essere fatto in O (n log n). Successivamente è possibile eseguire il looping dei dati ordinati e rilevare se un numero i non viene seguito da n + 1. Ciò aggiungerebbe un altro n ma sarebbe comunque presente in O (n log n). –
-1. La tua domanda non è chiara. Cosa vuoi dire che i numeri mancano nell'array 1..n (probabilmente intendevi '(1..n) .to_a')? Non include tutti loro? Se ci sono alcuni dettagli sul link, non aiuta ancora. Devi indicare chiaramente la domanda qui. – sawa
"Più veloce" è mal definito. Algoritmo più veloce e probabile implementazione di Ruby più veloce, duplicato di: http://stackoverflow.com/questions/3492302/easy-interview-question-got-harder-given-numbers-1-100-find-the-missing-numbe. Miglior golfista Ruby: forse la risposta di steenslag. –