Soru: üç diziler ve O (*N N)
Biz varsayalımüçuzunluğu dizileriNyazın rasgele sayılar long
içeren. Sonra bir numara verilirM(aynı türden) ve misyonumuz üç sayı seçmekBir,BveCher diziden bir (diğer bir deyişleBirgerekirilk diziden, toplanırBgelen ikinci veCüçüncü) toplamıC = A B M.
Soru:üç sayı seç ve zaman karmaşıklığı ile sonuna kadarO(N2)?
Örnek:
Diziler
1) 6 5 8 3 9 2
2) 1 9 0 4 6 4
3) 7 8 1 5 4 3
VeMverildi19. O zaman bizim seçim olacaktır8ilk gelen,4ikinci ve7üçüncü.
CEVAP
Bu O(1) Uzay ve O(N . yapılabilir ^sup>2) zaman.
İlk sağlar basit bir sorunu çözmek:
Ä°ki dizi verilen A
B
bunların toplamı 6 ** verilen sayıya eşit olan her bir öğe seçin.
O aldığı her iki dizi(NlogN) tür.
i
A
j
B
sonuna işaret dizinin başlangıcına işaret eden işaretçiler i
j
al.
Toplamı A[i] B[j]
K
ile karşılaştırın
- bulduk
A[i] B[j] == K
çiftiA[i]
B[j]
- eÄŸer
A[i] B[j] < K
, gerekirse toplam artış, artışi
. - eÄŸer
A[i] B[j] > K
, gerekirse toplam azalma, azaltmaj
.
Sıralama sonra çifti bulmak için bu işlem O(N) alır.
Şimdi asıl sorun atalım. Üçüncü bir dizi şimdi C
çağrı var.
Yani algoritma ..
foreach element x in C
find a pair A[i], B[j] from A and B such that A[i] B[j] = K - x
end for
Dış döngü(N) işlemi, tüm algoritma O hale yaptığımız her çalışma için N
kat ve(N çalıştırır2).
Ä°ki soru iÅŸareti birlikte C ne demek#?...
Kolay mülakat zor soru var: 1..100, ek...
PHP diziler depolamak için tercih edil...
Nasıl C diziler kullanırım ?...
Java: PHP gibi diziler için'in ka...