Röportaj soru:İki dizinin elemanlarını değiştirin, böylece elemanların toplamı farkı az olur.
Verilen olmayan iki sıralı tam sayı dizileri
a
veb
, onların büyüklüğü n tüm numaraları rastgele seçilir değildir: böyle unsurların toplamı oa
veb
unsurlarını, değiştirina
eksib
öğelerinin toplamı minimumdur. örneğe göre
:
a = [ 5 1 3 ]
b = [ 2 4 9 ]
sonuç (1 + 2 + 3) '- (4 + 5 + 9) = -12.
Algoritmam: Onları bir arada sıralayın ve ardından en küçük n
inçlerini a
'a koyun ve b
'da bırakın. O (n lg n) zaman ve O (n) uzaydadır. O zaman içinde O (n) ve uzayda O (1) ile bir algoritmaya nasıl geliştirileceğini bilmiyorum. O (1), 1. ve 2. sıralar haricinde daha fazla alana ihtiyaç duymadığımız anlamına gelir.
Herhangi bir fikrin var mı?
Alternatif bir soru şudur: Farklılıkların mutlak değerini en aza indirmeye ihtiyacımız varsa (|sum(a) - sum(b)|
'u en aza indirirsek)?
Bir python veya C++ düşüncesi tercih edilir.
bir ödev gibi. Öyleyse, lütfen buna göre etiketleyin. – celtschk
Orijinal a ve b listelerini göz önünde bulundurarak boşlukta O (1) olamaz. Onları düşünmüyorsanız, değerleri doğrudan değiştirin. Her iki durumda, lütfen soruda daha fazla ayrıntı verin. – GaretJax
@GaretJax, O (n) süresiyle nasıl etkin bir şekilde takas edilir? – user1002288