Leetcode 18. 4Sum

Bizga sonlardan iborat nums array berilgan. Ularning ichidan umumiy yig’indisi target ga teng bo’ladigan va takrorlanmaydigan kvadripletlarni topib, array ko’rinishida qaytaring.

Misol 1:

Input: nums = [1,0,-1,0,-2,2], target = 0
Output: [[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]

Misol 2:

Input: nums = [2,2,2,2,2], target = 8
Output: [[2,2,2,2]]

Ishlash tartibi

Eng oson varianti – bruteforce bo’lib, to’rtta sikl ichida sonlarni bir biriga qo’shib chiqiladi va yig’indisi target ga tengmi yo’qmi tekshiriladi. Ammo bunda ishlash vaqti O(N4) ga teng bo’ladi.

Yana bir variant ikki pointerli (two pointer). Bunda uch sikl ishlatiladi, ya’ni O(N3) vaqtda hisoblashlar bajariladi. Biz bu usul haqida Leetcode 15. 3Sum masalasida tanishganimiz uchun ko’p to’xtalib o’tirmayman. 4Sum’ning 3Sum‘dan farqi – qo’shimcha bir siklning qo’shilishida xolos.

i   j l     r
-------------
0   1 2 3 4 5
-------------
-2 -1 0 0 1 2
-------------

Kod