Yinelenenleri Yerinde Kaldırma
Yavaş ve hızlı bir işaretçi çifti kullanın.
Yinelenenleri Yerinde Kaldırma, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Competitive Programming Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Competitive Programming Academy kursu toplamda 4 dersten oluşur.
Yinelenenleri Yerinde Kaldırma
Sıralanmış bir dizi verildiğinde, ek bir dizi kullanmadan her değerin bir kopyasını koruyun. İşlemi yerinde yapmak bellek tasarrufu sağlar ve mülakatlarda sık sorulan klasik bir görevdir. 🧹
Sıralama Neden Yardımcı Olur
Dizi sıralı olduğunda her yinelenen değer kendi eşinin hemen yanında bulunur. Böylece tüm diziyi değil, yalnızca komşuları karşılaştırırsınız.
İki Rol, İki İşaretçi
Son korunan değeri gösteren yavaş bir işaretçi ve ileride yeni bir şey arayarak tarama yapan hızlı bir işaretçi kullanın.
slow = 0
fast = 1Yavaş İşaretçi Yazar
yavaş işaretçiyi yazma konumu olarak düşünün: kendisinin öncesindeki ve bulunduğu konumdaki her şey zaten temizlenmiş ve tektir.
Hızlı İşaretçi Okur
hızlı işaretçi yalnızca ileri doğru okur. Önden ilerler ve henüz korunmamış bir değer gördüğünde yavaşa haber verir.
Tekrarları Atlayın
a[fast], a[slow] değerine eşitse bu bir tekrardır; hızlı işaretçiyi ilerletmek dışında hiçbir şey yapmayın. Yinelenen değer sessizce atlanır.
for fast in range(1, n):
if a[fast] == a[slow]:
continueYeni Bir Şey Bulundu
a[fast] farklı olduğunda yavaşı ilerletin ve yeni değeri oraya kopyalayın. Böylece eski yinelenen değerlerin üzerine yeni ve tekil veriler yazılır.
else:
slow += 1
a[slow] = a[fast]Yanıt Uzunluktur
Tarama sonrasında slow + 1, dizinin başında toplu hâlde bulunan tekil değerlerin sayısıdır.
return slow + 1Kuyruğu Yok Sayın
Tekil önekten sonra kalan her şey artık gereksiz veridir. Problem yalnızca ilk slow + 1 öğeyle ilgilenir; bu nedenle kuyruğu olduğu gibi bırakın.
Boş Diziyi Unutmayın
Boş bir dizide hiç tekil değer yoktur. Başlamadan önce n == 0 durumunu kontrol edin; böylece dizinin sonunun ötesini okumazsınız.
if n == 0:
return 0Tek Geçiş, Ek Alan Yok
Bu yavaş-hızlı kalıbı O(n) zamanda ve O(1) ek alanla çalışır; sıkı bellek sınırlarının gerektirdiği tam olarak budur.
Hızlı Kontrol
Sıralanmış bir dizide yavaş ve hızlı işaretçilerle yinelenenleri yerinde kaldırıyorsunuz.
Özet
Sıralanmış bir dizide yavaş-hızlı işaretçi çifti, ek alan kullanmadan tek bir O(n) geçişinde yinelenenleri kaldırır ve tekil değerlerin sayısı olarak slow + 1 döndürür. 🎉
Sıkça Sorulan Sorular
“Yinelenenleri Yerinde Kaldırma” dersi ücretsiz mi?
Evet — “Yinelenenleri Yerinde Kaldırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Competitive Programming Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Competitive Programming Academy kursu toplamda 4 dersten oluşur.
“Yinelenenleri Yerinde Kaldırma” dersinde ne öğreneceğim?
Yavaş ve hızlı bir işaretçi çifti kullanın. Competitive Programming Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Competitive Programming Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Competitive Programming Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Yinelenenleri Yerinde Kaldırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Competitive Programming Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Competitive Programming Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Sıralanmış Dizide İki İşaretçi
- Verilen Toplama Sahip Bir Çift Bulma
- Yinelenenleri Yerinde Kaldırma
- İki Sıralı Diziyi Birleştirme