Menu
CoddyTech

3Sum

Kamu mendapatkan sebuah list bilangan bulat nums. Temukan setiap triplet [a, b, c] nilai yang diambil dari tiga posisi berbeda dalam nums dengan a + b + c = 0. Tulis setiap triplet dalam urutan tidak menurun (a ≤ b ≤ c) dan cantumkan setiap triplet yang berbeda satu kali, meskipun beberapa pilihan posisi menghasilkan triplet yang sama. Kembalikan triplet yang diurutkan berdasarkan nilai pertamanya, lalu nilai keduanya.

Fungsi

threeSum(nums: integer-array) → integer-2d-array
numsinteger-array
daftar bilangan bulat, dengan setidaknya tiga elemen
Mengembalikaninteger-2d-array
setiap triplet berbeda yang jumlahnya 0, masing-masing dalam urutan tidak menurun, daftar diurutkan

Batasan

  • 3 ≤ nums.length ≤ 3000
  • -105 ≤ nums[i] ≤ 105
  • Setidaknya satu tripel berjumlah 0.
  • Dua triplet dianggap sama jika keduanya menyimpan tiga nilai yang sama.

Contoh

Input
nums = [-2, 0, 1, 1, -1, 2]
Output
[[-2, 0, 2], [-2, 1, 1], [-1, 0, 1]]
Penjelasan
Tiga triplet menghasilkan 0. [-2, 1, 1] menggunakan nilai 1 dua kali karena 1 berada di dua posisi; [-1, 0, 1] dapat menggunakan salah satu nilai 1, tetapi hanya muncul sekali.
challenge icon

Pertanyaan lanjutan

Pola yang sama menyelesaikan 4Sum: tetapkan dua nilai dan jalankan dua pointer pada bagian sisanya. Bisakah kamu menulisnya dalam O(n³) dan memastikan aturan duplikat tetap benar di setiap tingkat?

Reset kode
def threeSum(nums):
    # Tulis kodemu di sini

Tes #1

Tes #2

Argumen

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

Output yang diharapkan

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