Menu
CoddyTech

4Sum

Kamu mendapatkan sebuah list bilangan bulat nums dan sebuah bilangan bulat target. Kembalikan setiap quadruplet [a, b, c, d] yang keempat nilainya berada pada empat posisi berbeda di nums dan jumlahnya sama dengan target. Tulis setiap quadruplet dengan nilai-nilainya dalam urutan tidak menurun. Jika empat nilai yang sama dapat dipilih dari posisi berbeda, quadruplet tersebut tetap muncul satu kali. Urutkan jawaban berdasarkan nilai pertama, lalu kedua, lalu ketiga. Jika tidak ada quadruplet yang memenuhi, kembalikan list kosong.

Fungsi

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
angka yang bisa dipilih, setidaknya satu
targetinteger
jumlah yang harus dicapai setiap kuadruplet
Mengembalikaninteger-2d-array
kuadruplet berbeda dengan jumlah target, masing-masing diurutkan, daftarnya juga diurutkan; daftar kosong jika tidak ada

Batasan

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • Jumlah empat nilai apa pun berada di antara -4 × 108 dan 4 × 108, sehingga muat dalam bilangan bulat 32-bit.
  • Setiap quadruplet yang berisi empat nilai sama dihitung sebagai satu.

Contoh

Input
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
Output
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
Penjelasan
Masing-masing dari empat kuadruplet berjumlah 1, misalnya -3 + (-1) + 2 + 3. Dua yang diawali dengan -3 muncul lebih dahulu, diurutkan berdasarkan nilai keduanya: -1 sebelum 0.
challenge icon

Pertanyaan lanjutan

Hitung banyaknya himpunan empat posisi yang nilainya berjumlah target, bukan kuadruplet yang berbeda. Contoh kedua memiliki 15. Bisakah kamu melakukannya dalam O(n²)?

Reset kode
def fourSum(nums, target):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

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