Zamana Dayalı Anahtar Değer Deposu
'Zamana Dayalı Anahtar Değer Deposu' sorunu için ayrıntılı kılavuz ve Python uygulaması.
1. Öğren
'Zamana Dayalı Anahtar Değer Deposu' sorunu, İkili Arama 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
Zamana Dayalı Anahtar Değer Deposu için mantık akışının görselleştirilmesi.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Zamana Dayalı Anahtar Değer Depolamaya ilişkin sorun bildirimini 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
Aynı anahtar için farklı zaman damgalarında birden fazla değer depolayabilen ve anahtarın değerini belirli bir zaman damgasında alabilen, zamana dayalı bir anahtar/değer veri yapısı tasarlayın.
TimeMap sınıfını uygulayın:
- TimeMap() Nesneyi başlatır.
- set(key: str, value: str, timestamp: int) key anahtarını value değerine sahip olarak belirtilen zamanda timestamp saklar.
- get(key: str, timestamp: int) -> str set daha önce timestamp_prev <= timestamp ile çağrılmış olacak şekilde bir değer döndürür. Böyle birden fazla değer varsa, en büyük timestamp_prev ile ilişkili değeri döndürür. Hiçbir değer yoksa "" değerini döndürür.
- •1 <= key.length, value.length <= 100
- •key and value consist of lowercase English letters and digits
- •1 <= timestamp <= 10^7
- •All timestamps of set are strictly increasing for each key
- •At most 2 * 10^5 calls will be made to set and get
Örnekler
["TimeMap", "set", "get", "get", "set", "get", "get"] [[], ["foo", "bar", 1], ["foo", 1], ["foo", 3], ["foo", "bar2", 4], ["foo", 4], ["foo", 5]]
[None, None, "bar", "bar", None, "bar2", "bar2"]
set("foo", "bar", 1): stores bar at time 1. get("foo", 1): returns "bar". get("foo", 3): returns "bar" (latest value at or before time 3). set("foo", "bar2", 4): stores bar2 at time 4. get("foo", 4): returns "bar2". get("foo", 5): returns "bar2".
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
class TimeMapOpt:
def __init__(self):
self.store = {}
def set(self, key: str, value: str, timestamp: int) -> None:
if key not in self.store: self.store[key] = []
self.store[key].append([value, timestamp])
def get(self, key: str, timestamp: int) -> str:
res = ""
values = self.store.get(key, [])
l, r = 0, len(values) - 1
while l <= r:
m = (l + r) // 2
if values[m][1] <= timestamp:
res = values[m][0]
l = m + 1
else:
r = m - 1
return resKaba Kuvvet Kodu (Spoiler Korumalı)
Kaba Kuvvet Kodu (Spoiler Korumalı)
class TimeMapBrute:
def __init__(self):
self.store = {}
def set(self, key: str, value: str, timestamp: int) -> None:
if key not in self.store: self.store[key] = []
self.store[key].append([value, timestamp])
def get(self, key: str, timestamp: int) -> str:
res = ""
values = self.store.get(key, [])
for v, t in values:
if t <= timestamp: res = v
return resAlgorithm Pattern Checklist
When dealing with Binary Search data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Standart İkili Arama probleminin ö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 Datetime
Python'da tarihleri, saatleri, saat dilimlerini ve hesaplamaları nasıl kullanacağınızı öğrenin. Datetime ve timedelta'yı kullanarak biçimlendirme, ayrıştırma ve aritmetik konusunda uzmanlaşın.
Python'da Bir Sözlüğü Değere Göre Sıralama
Python sözlüğünü değerlerine göre nasıl sıralayacağınızı öğrenin. sorted() yöntemini, özel anahtar lambdaları ve sıralı dikte yapıları oluşturmayı kullanarak sıralamayı keşfedin.
Python DateTime Biçimlendirme Hile Sayfası
Datetime, strftime ve strptime kullanarak Python'da tarih ve saatleri nasıl ayrıştıracağınızı ve biçimlendireceğinizi öğrenin.
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.