Utilizzo della ricerca binaria in diversi scenari

3

Devo fare la mia intervista più grande la prossima settimana e sto lavorando duramente per questo. Mi sono anche iscritto per alcune finte interviste per questo. Quindi, venendo al problema l'ultimo giorno ho avuto questa finta intervista e mi è stata fatta questa domanda:

Cerca un elemento in una matrice ordinata e ruotata

all'inizio non ero all'oscuro ma l'intervistatore mi ha chiesto di risolvere il problema e poi di risolvere il problema più piccolo, quindi ho deciso di scrivere la ricerca binaria per trovare l'elemento nell'array ordinato, sorprendentemente sono riuscito a scrivere l'algoritmo in un colpo dato che avevo chiaro il modello mentale del problema a portata di mano ora mi è stato chiesto di procedere e di risolvere la domanda data. Ho pensato per un secondo e gli ho detto che se in qualche modo conoscevo il punto di picco, posso decidere in quale direzione andare per trovare l'elemento dato, mi ha detto che sono sulla strada giusta e poi boom non ero in grado di pensare correttamente su come convertire la mia logica in codice, mi ha dato un paio di suggerimenti ed era troppo imbarazzante per me semplicemente sedermi a riflettere.

Il problema è che dopo aver conosciuto la soluzione e sapendo che la mia intuizione era corretta non sono sicuro del motivo per cui ho fallito, ho bisogno di sapere c'è un modo diverso di pensare a questi problemi per capire meglio la logica? Perché provo disagio quando ho trovato un nuovo problema nella ricerca binaria sebbene sapessi e abbia risolto quello originale? c'è una lacuna nel mio modale mentale?

    
posta CodeYogi 30.12.2016 - 03:52
fonte

1 risposta

4

it was too embarrassing for me to just sit and think.

Bene, ecco il tuo problema.

La programmazione non è qualcosa che accade solo quando le dita sono sui tasti. Ho risolto problemi spinosi mentre fissavo la piastrella nella mia doccia. Non aver paura di prendere un momento, respiro e pensare. L'inferno chiede una pausa per il bagno, se necessario.

Inoltre, mentre la soluzione di Robert Harvey di restituire una versione non ruotata dell'array non è O (log n), sarebbe accettabile per me in un'intervista se riconoscessi che non è O (log n) quando presenti esso. Nel mondo agile lo fai funzionare prima di farlo velocemente. Sarei più colpito se tu chiedessi se fosse accettabile prima che tu lo abbia codificato.

Rompere un problema non significa solo dividerlo in parti più piccole. Sta anche sfidando le tue ipotesi sui requisiti.

Potrei comunque spingerti alla soluzione completa O (log n) ma ora sarei disposto a darti più tempo per trovarlo perché mi hai mostrato che non sparirai nel problema . Finché stai controllando quanto tempo hai e mostrando ciò che hai capito, mi sento meglio aspettare.

Parlare mentre lo pensi aiuta. Potrebbero non darti suggerimenti, ma puoi sempre usare l'intervistatore come duck .

    
risposta data 01.01.2017 - 19:59
fonte

Leggi altre domande sui tag