SORU
7 Kasım 2012, ÇARŞAMBA


En iyi iki dizi arasında bir kavşak kazanmak için.

Çeşitli durumlar sırasında bu sorunu birçok kez karşı karşıya geldim. C ya da Java ile rahat olmama rağmen tüm programlama dilleri için genel.

Bize iki dizi (veya topluluklar) ele alalım:

char[] A = {'a', 'b', 'c', 'd'};
char[] B = {'c', 'd', 'e', 'f'};

Nasıl yeni bir dizi olarak iki dizi arasındaki ortak unsurlar alabilirim? Bu durumda, dizi A ve B kesişim char[] c = {'c', 'd'}.

Başka bir dizi içinde bir dizi tekrarlanan yineleme önlemek istiyorum. çok büyük diziler halinde olan yürütme zamanı (B kez uzunluğu uzunluğu) artış.

Her dizide tek bir geçiş ortak öğeleri almak için yapabileceğimiz bir yol var mı?

CEVAP
7 Kasım 2012, ÇARŞAMBA


foreach element e in array A
    insert e into hash table H

foreach element e in array B
    if H contains e 
        print e

Bu algoritma, zaman ve mekan içinde O(N) O(N).

Fazladan boşluğu önlemek için, sıralama temelli bir yaklaşım kullanabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010
  • SRC RECORDS

    SRC RECORDS

    2 EKİM 2006