Menu
CoddyTech

4Sum

Otrzymujesz listę liczb całkowitych nums oraz liczbę całkowitą target. Zwróć wszystkie czwórki [a, b, c, d], których cztery wartości znajdują się na czterech różnych pozycjach w nums i sumują się do target. Zapisz każdą czwórkę w kolejności wartości niemalejącej. Jeśli te same cztery wartości można wybrać z różnych pozycji, czwórka nadal pojawia się tylko raz. Posortuj wynik według pierwszej wartości, następnie drugiej, a potem trzeciej. Jeśli żadna czwórka nie spełnia warunków, zwróć pustą listę.

Funkcja

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
liczby do wyboru, co najmniej jedna
targetinteger
suma, do której musi dojść każda czwórka
Zwracainteger-2d-array
różne czwórki liczb o sumie równej wartości docelowej, każda posortowana, a lista również posortowana; pusta lista, jeśli nie ma żadnych

Ograniczenia

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • Suma dowolnych czterech wartości mieści się w przedziale od -4 × 108 do 4 × 108, więc mieści się w 32-bitowej liczbie całkowitej.
  • Czwórki zawierające te same cztery wartości liczą się jako jedna.

Przykłady

Wejście
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
Wyjście
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
Wyjaśnienie
Każda z czterech czwórek daje w sumie 1, na przykład -3 + (-1) + 2 + 3. Te dwie, które zaczynają się od -3, są pierwsze i uporządkowane według drugiej wartości: -1 przed 0.
challenge icon

Pytanie dodatkowe

Policz zestawy czterech pozycji, których wartości sumują się do target, zamiast różnych czwórek. Drugi przykład zawiera 15 takich zestawów. Czy potrafisz zrobić to w O(n²)?

Zresetuj kod
def fourSum(nums, target):
    # Wpisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

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