Fjern dubletter på stedet
Brug et par med en langsom og en hurtig pointer
Fjern dubletter på stedet er en gratis Forberedelse til kodeinterviews-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Forberedelse til kodeinterviews, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Forberedelse til kodeinterviews-kurset indeholder 4 lektioner i alt.
Fjern duplikater på stedet
Givet et sorteret array skal du beholde én kopi af hver værdi uden et ekstra array. Når du arbejder på stedet, sparer du hukommelse, og det er en klassisk opgave til jobsamtaler. 🧹
Hvorfor sortering hjælper
Når arrayet er sorteret, står hvert duplikat lige ved siden af sin kopi. Derfor sammenligner du kun naboer og aldrig hele arrayet.
To roller, to pointere
Brug en slow-pointer, der markerer den senest gemte værdi, og en fast pointer, der gennemløber arrayet fremad og leder efter noget nyt.
slow = 0
fast = 1Den langsomme pointer skriver
Tænk på slow som skrivepositionen: Alt ved eller før den er allerede renset og entydigt.
Den hurtige pointer læser
Pointeren fast læser bare fremad. Den løber i forvejen og giver kun slow besked, når den finder en værdi, der endnu ikke er gemt.
Spring gentagelser over
Hvis a[fast] er lig med a[slow], er det en gentagelse, så du skal ikke gøre andet end at øge fast. Du springer stille og roligt duplikatet over.
for fast in range(1, n):
if a[fast] == a[slow]:
continueFandt noget nyt
Når a[fast] er forskellig, skal du flytte slow frem og kopiere den nye værdi dertil. På den måde overskriver du gamle duplikater med nye, entydige data.
else:
slow += 1
a[slow] = a[fast]Svaret er længden
Efter gennemløbet er slow + 1 antallet af entydige værdier, som alle ligger samlet forrest i arrayet.
return slow + 1Ignorér resten
Alt, der ligger efter det entydige præfiks, er overskydende data. Opgaven interesserer sig kun for de første slow + 1 elementer, så lad resten være.
Husk det tomme array
Et tomt array har nul entydige værdier. Kontrollér n == 0, før du starter, så du ikke læser forbi slutningen.
if n == 0:
return 0Ét gennemløb uden ekstra plads
Dette mønster med en langsom og en hurtig pointer bruger O(n) tid og O(1) ekstra plads, hvilket er præcis det, stramme hukommelsesbegrænsninger kræver.
Hurtig kontrol
Du fjerner duplikater på stedet i et sorteret array med langsomme og hurtige pointere.
Opsamling
I et sorteret array fjerner et par med en langsom og en hurtig pointer duplikater i ét O(n)-gennemløb uden ekstra plads og returnerer slow + 1 som antallet af entydige værdier. 🎉
Lær Forberedelse til kodeinterviews med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 90
- Lektioner
- 360
Ofte stillede spørgsmål
Er lektionen “Fjern dubletter på stedet” gratis?
Ja — hele teksten til “Fjern dubletter på stedet” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Forberedelse til kodeinterviews-kurset, skal du opgradere til CoddyKit PRO. Forberedelse til kodeinterviews-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Fjern dubletter på stedet”?
Brug et par med en langsom og en hurtig pointer Du øver dig i Forberedelse til kodeinterviews med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Forberedelse til kodeinterviews?
Der kræves ingen tidligere erfaring. Forberedelse til kodeinterviews på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Fjern dubletter på stedet”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Forberedelse til kodeinterviews-lektion?
Ja. Alle Forberedelse til kodeinterviews-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- To pointere i et sorteret array
- Find et par med en given sum
- Fjern dubletter på stedet
- Flet to sorterede sekvenser