Mağaza bin telefon numaraları için en verimli şekilde
Bu google mülakat sorusu:
Bin telefon numaraları 10 haneli olan her saklanabilir vardır. Bin numara üzerinden aynı olması için her ilk 5 basamak kabul edilebilir. Aşağıdaki işlemleri gerçekleştirmek için: bir. Eğer belirli bir sayı varsa arama. b. Tüm baskı sayısı
En verimli yer tasarrufu bunu yapmanın yolu nedir ?
Karma tablo açtım ve daha sonra huffman kodlama ama benim spiker doğru yöne doğru yolda olduğunu söyledi. Bana yardım edin lütfen.
Olabilir soneki sükunet yardım kullanarak?
İdeal olarak 1000 numaralarından bütün 4000 1000 bayt sayısını saklamak için o sayı başına 4 bayt alır. Nicelik, depolama < 4000 azaltmak istiyorum bayt, bu benim spiker bana açıkladı.
CEVAP
Aşağıda, tamsayı değişkenleri dizeleri aksine) gibi sayılar davranıyorum:
- Numaraları sıralama.
- İlk beş basamaktan her ayırarak son beş basamak.
- İlk beş basamak arasında aynı sayılar vardır, bu yüzden sadece bir kez onları saklayın. Bu depolama 17 bit gerektirir.
- Tek tek her sayının son beş basamaklı mağaza. Bu sayı yüzde 17 bit gerektirir.
İlk 17 bit ortak önek, 17 bit sonraki 1000 grupları, her sayıda artan düzende saklı son beş basamak vardır. özetlemek gerekirse:
Toplam 1000 sayı veya 10 haneli telefon numaranızı başına 17.017 bit için 2128 bayt bakıyoruz.
Arama O(log n)
(ikili arama) ve tam numaralandırma O(n)
.
Nasıl verimli bir şekilde anahtarları/...
En verimli şekilde sıfır JavaScript di...
Nasıl verimli bir şekilde Gidip dizele...
En verimli T-SQL şekilde belirli bir s...
Bir dizi önüne için en verimli şekilde...