Menu
CoddyTech

4Sum

Bir tamsayı listesi nums ve bir tamsayı target veriliyor. Dört değeri de nums listesinin farklı konumlarında bulunan ve toplamları target olan tüm dörtlüleri [a, b, c, d] döndürün. Her dörtlüyü, değerleri azalmayan sırada olacak şekilde yazın. Aynı dört değer farklı konumlardan seçilebiliyorsa dörtlü yine de yalnızca bir kez yer alır. Yanıtı önce ilk değere, sonra ikinciye, ardından üçüncüye göre sıralayın. Hiçbir dörtlü koşulu sağlamıyorsa boş bir liste döndürün.

Fonksiyon

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
seçilecek sayılar, en az bir
targetinteger
her dörtlünün ulaşması gereken toplam
Döndürürinteger-2d-array
toplamı hedefe eşit olan farklı dörtlüler; her biri sıralıdır, liste de sıralıdır; hiçbiri yoksa boş liste

Kısıtlar

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • Dört değerin toplamı -4 × 108 ile 4 × 108 arasında kalır, bu nedenle 32 bitlik bir tamsayıya sığar.
  • Dört değerin aynısını içeren dörtlüler bir tane sayılır.

Örnekler

Girdi
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
Çıktı
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
Açıklama
Dört dörtlünün her birinin toplamı 1 eder; örneğin -3 + (-1) + 2 + 3. -3 ile başlayan ikisi önce gelir ve ikinci değerlerine göre sıralanır: -1, 0'dan önce gelir.
challenge icon

Ek soru

Farklı dörtlüleri değil, değerleri target değerini veren dört konum kümesini sayın. İkinci örnekte sonuç 15'tir. Bunu O(n²) içinde yapabilir misiniz?

Kodu sıfırla
def fourSum(nums, target):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

nums = [3, -1, 0, 2, -2, 1, -3]
target = 1

Beklenen Çıktı

[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]