Reduser søkerommet på en smart måte
Fastsett én variabel og søk gjennom resten
Reduser søkerommet på en smart måte er en gratis leksjon i Competitive Programming Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Competitive Programming Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Competitive Programming Academy inneholder totalt 4 leksjoner.
Mindre søk, samme svar
Noen ganger er brute force akkurat litt for tregt. Løsningen er å redusere det du søker gjennom uten å miste noe korrekt svar. 🙂
Fastsett én variabel
Et kraftig triks er å fastsette én variabel ved å gå gjennom mulighetene for den, og deretter løse resten raskere. Du bytter ut ett fullstendig søk med mange små søk.
Fra n² til n log n
Fastsett det første elementet, og bruk deretter binærsøk eller hashing for å finne partneren. Da blir et søk på O(n i andre) omtrent til O(n log n).
for a in arr:
if (target - a) in seen:
return True
seen.add(a)Beskjær umulige grener
Stopp tidlig på enhver vei som ikke kan slå det beste svaret ditt så langt. En gren du hopper over, koster ingenting å utforske.
Sorter for å muliggjøre avbrudd
Hvis du sorterer først, kan du ofte bryte ut av en løkke tidlig. Når verdiene har passert en terskel, vet du at resten ikke kan hjelpe.
Utnytt symmetri
Hvis det gir samme resultat å bytte om på to elementer, trenger du bare å søke gjennom én rekkefølge. Ved å telle hvert tilfelle én gang kan du halvere eller redusere arbeidet enda mer.
Møt på midten
Del elementene i to halvdeler, gå gjennom begge, og kombiner resultatene. Da reduseres et søk på 2^n til omtrent 2^(n/2) arbeid.
Mellomlagre gjentatt arbeid
Hvis det samme delproblemet dukker opp igjen, lagrer du resultatet og bruker det på nytt. Memoisering fjerner hele gjentatte grener fra søket.
Beregn en grense før du forgrener
Beregn en optimistisk grense for en gren. Hvis selv det beste mulige utfallet der taper, kan du hoppe over grenen helt og spare tid.
Bevar korrektheten
Hver begrensning må være trygg: Beskjær bare stier som faktisk ikke kan vinne. Test mot ren brute force for å bekrefte at du ikke har mistet noen svar.
Reduser, og søk deretter
Bruk disse triksene når brute force er nær grensen, men fortsatt for tregt. Fastsett en variabel, beskjær grener eller del opp søket, så passer det ofte innenfor tidsgrensen.
Hurtigsjekk
En full gjennomgang av 2^n delmengder er for treg, men du kan dele elementene i to halvdeler.
Oppsummering
Reduser søket ved å fastsette en variabel, beskjære håpløse grener, utnytte symmetri eller møtes på midten. Sørg for at hver begrensning er trygg. 🚀
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Reduser søkerommet på en smart måte» gratis?
Ja – hele teksten i «Reduser søkerommet på en smart måte» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Competitive Programming Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Competitive Programming Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Reduser søkerommet på en smart måte»?
Fastsett én variabel og søk gjennom resten Du øver på Competitive Programming Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Competitive Programming Academy?
Ingen tidligere erfaring er nødvendig. Competitive Programming Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Reduser søkerommet på en smart måte»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Competitive Programming Academy-leksjonen?
Ja. Alle Competitive Programming Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Brute force er en gyldig strategi
- Enumerer med itertools
- Enumerering av delmengder med bitmasker
- Reduser søkerommet på en smart måte