Menu
CoddyTech

3Sum

Bir tamsayı listesi nums alıyorsunuz. nums içindeki üç farklı konumdan alınan ve a + b + c = 0 koşulunu sağlayan tüm değer üçlülerini [a, b, c] bulun. Her üçlüyü azalmayan sırada (a ≤ b ≤ c) yazın ve birden fazla konum seçimi aynı üçlüyü oluştursa bile her farklı üçlüyü yalnızca bir kez listeleyin. Üçlüleri önce ilk değerlerine, ardından ikinci değerlerine göre sıralı olarak döndürün.

Fonksiyon

threeSum(nums: integer-array) → integer-2d-array
numsinteger-array
en az üç öğe içeren tam sayılar listesi
Döndürürinteger-2d-array
toplamı 0 olan her farklı üçlü, her biri azalmayan sırada, liste sıralı

Kısıtlar

  • 3 ≤ nums.length ≤ 3000
  • -105 ≤ nums[i] ≤ 105
  • En az bir üçlünün toplamı 0'dır.
  • İki üçlü, aynı üç değeri içeriyorsa aynıdır.

Örnekler

Girdi
nums = [-2, 0, 1, 1, -1, 2]
Çıktı
[[-2, 0, 2], [-2, 1, 1], [-1, 0, 1]]
Açıklama
-2 + 0 + 2, -2 + 1 + 1 ve -1 + 0 + 1 işlemlerinin tümü 0 eder. [-2, 1, 1], 1 değerini iki kez kullanabilir çünkü 1 iki konumda bulunur; [-1, 0, 1] ise 1 değerlerinden herhangi biriyle oluşturulabilir ama yalnızca bir kez görünür.

lock iconGönderirken +15 gizli test

challenge icon

Ek soru

Aynı kalıp 4Sum sorununu çözer: iki değeri sabitle ve geri kalanında iki işaretçi kullan. Bunu O(n³) zaman karmaşıklığında yazıp her seviyede yinelenen değer kurallarını doğru uygulayabilir misin?

Kodu sıfırla
def threeSum(nums):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Girdi

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

Beklenen

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