Listeyi Rastgele İşaretçiyle Kopyala
'Listeyi Rastgele İşaretçiyle Kopyala' sorunu için ayrıntılı kılavuz ve Python uygulaması.
1. Öğren
'Listeyi Rastgele İşaretçiyle Kopyalama' sorunu Bağlantılı Liste bölümündeki önemli bir zorluktur.
Bu uygulama Python'deki kolay düzey mantığına odaklanır.
Sunduğumuz çözümlerde teknik doğruluğu ve kod okunabilirliğini ön planda tutuyoruz.
2. Real-World Applications
3. Visual Intuition
Rastgele İşaretçiyle Kopyalama Listesi için mantık akışının görselleştirilmesi.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Rastgele İşaretçiyle Listeyi Kopyala ile ilgili sorun açıklamasını dikkatlice okuyun.
2. Formulate brute force
Basit bir yinelemeli çözüm taslağı oluşturun.
3. Identify inefficiency
Gereksiz hesaplamaları arayın.
4. Optimize search path
Süreci hızlandırmak için karma veya sıralama kullanın.
5. Final Implementation
Üretim standartları kodunu temizleyin.
Sorun Bildirimi
Her düğümün, listedeki herhangi bir düğüme işaret edebilecek ek bir rastgele işaretçi içerecek şekilde veya boş olarak, n uzunluğunda bağlantılı bir liste verilir.
Listenin derin bir kopyasını oluşturun. Derin kopya, her yeni düğümün değerinin karşılık gelen orijinal düğümün değerine ayarlandığı tam olarak n yeni düğümden oluşmalıdır. Yeni düğümlerin hem sonraki hem de rastgele işaretçisi, orijinal listedeki ve kopyalanan listedeki işaretçiler aynı liste durumunu temsil edecek şekilde kopyalanan listedeki yeni düğümlere işaret etmelidir.
Liste, [val, random_index] çiftlerinin bir listesi olarak temsil edilir; burada random_index, rastgele işaretçinin işaret ettiği düğümün indeksidir veya boş değeri gösteriyorsa -1'dir. Derin kopyayı aynı biçimde döndüren copyRandomList(head: list) -> list işlevini uygulayın.
- •0 <= n <= 1000
- •-10000 <= Node.val <= 10000
- •Node.random is null or points to some node in the linked list
Örnekler
[[7,-1],[13,0],[11,4],[10,2],[1,0]]
[[7,-1],[13,0],[11,4],[10,2],[1,0]]
The deep copy has the same structure. Node 0 (val=7) has random=null, Node 1 (val=13) has random pointing to Node 0, etc.
[[1,1],[2,1]]
[[1,1],[2,1]]
Node 0 (val=1) has random pointing to Node 1. Node 1 (val=2) has random pointing to Node 1 (itself).
[[3,-1],[3,0],[3,-1]]
[[3,-1],[3,0],[3,-1]]
Three nodes all with value 3. Node 1's random points to Node 0.
Need a Hint?
Edge Cases to Watch
- Boş giriş yapıları
- Tek eleman girişleri
- Büyük sayısal sınırlar
Çözmeye Hazır mısınız?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.
Mülakat Bilgileri ve Çeşitleri
Karmaşıklık Analizi Dökümü
Neden Zaman: Directly evaluates all possibilities.
Neden Uzay: Uses standard local memory.
Neden Zaman: Optimized paths reduce total operations.
Neden Uzay: May trade memory for speed.
Optimize Edilmiş Çözüm Python Kodu
Optimize Edilmiş Çözüm Python Kodu
def copy_random_list_opt(head):
if not head: return None
if isinstance(head, list):
# Already in list format, return a deep copy
import copy
return copy.deepcopy(head)
return headKaba Kuvvet Kodu (Spoiler Korumalı)
Kaba Kuvvet Kodu (Spoiler Korumalı)
def copy_random_list_brute(head):
if not head: return None
# Map node indices to list of pairs format
if isinstance(head, list):
# Already in list format, return a deep copy
import copy
return copy.deepcopy(head)
return headAlgorithm Pattern Checklist
When dealing with Linked List data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Standart Bağlantılı Liste problem özellikleri geçerlidir.
İlgili Sorular
PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!
Önerilen Python Kaynakları
İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.
Python Listeleri
Python listeleri hakkında her şeyi öğrenin. Python'da dizileri yerel olarak nasıl oluşturacağınızı, dilimleyeceğinizi, değiştireceğinizi ve yineleyeceğinizi keşfedin.
Python'da Liste Nasıl Sıralanır
Python'da sort() yöntemini ve sorted() işlevini kullanarak bir listeyi nasıl sıralayacağınızı öğrenin. Özel anahtar sıralama ve ters sıralama örneklerini keşfedin.
Python Liste Yöntemleri Hile Sayfası
Python liste işlemleri için hızlı başvuru kılavuzu. Öğeleri ekleme, ekleme, çıkarma, sıralama ve dilimleme konusunda uzmanlaşın.
Python vs JavaScript: Hangi Programlama Dili En İyisidir?
Python ve JavaScript arasında kapsamlı bir karşılaştırma. Sözdizimi farklılıklarını, performansı, kullanım örneklerini (arka uç ve ön uç) ve kodlama örneklerini keşfedin.