দেওয়া লিস্ট nums এবং টার্গেট k। চারটি ভিন্ন এলিমেন্ট যাদের যোগফল ঠিক k হয় কিনা তা বুলিয়ান রিটার্ন করতে হবে।
উদাহরণ: nums=[11,4,6,10,5,1], k=25 → [4,6,10,5]=25 → True।
নেস্টেড লুপ + টু-পয়েন্টার
- অ্যারে সর্ট করুন।
- দুটি নেস্টেড লুপ
i(০ থেকে n-4) এবংj(i+1 থেকে n-3) ফিক্স করুন। - বাকি দুইটি জন্য টু-পয়েন্টার:
l=j+1, h=n-1। summ = nums[i]+nums[j]+nums[l]+nums[h]।summ == k→ True;summ < k→ l++;summ > k→ h--।
পাইথন কোড
class Solution:
def solve(self, nums, k):
nums.sort()
n = len(nums)
for i in range(n - 3):
for j in range(i + 1, n - 2):
l, h = j + 1, n - 1
while l < h:
summ = nums[i] + nums[j] + nums[l] + nums[h]
if summ == k:
return True
elif summ < k:
l += 1
else:
h -= 1
return False
ob1 = Solution()
print(ob1.solve([11, 4, 6, 10, 5, 1], 25)) # True
টাইম কমপ্লেক্সিটি: O(n³), স্পেস: O(1)। 4Sum সমস্যার স্ট্যান্ডার্ড সমাধান। ডুপ্লিকেট এড়াতে এক্সট্রা চেক যোগ করা যেতে পারে।