ধরুন আমাদের কাছে সংখ্যার একটি অ্যারে আছে। এটি n পূর্ণসংখ্যা সঞ্চয় করে, অ্যারেতে a, b, c উপাদান রয়েছে, যেমন a + b + c =0। অ্যারেতে সমস্ত অনন্য ট্রিপলেট খুঁজুন যা পরিস্থিতিকে সন্তুষ্ট করে। সুতরাং যদি অ্যারেটি [-1,0,1,2,-1,-4] এর মত হয়, তাহলে ফলাফল হবে [[-1, 1, 0], [-1, -1, 2]]পি>
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- অ্যারের সংখ্যাগুলি সাজান, এবং একটি অ্যারের রেস সংজ্ঞায়িত করুন
- আমি পরিসীমা 0 থেকে সংখ্যার দৈর্ঘ্য - 3
- যদি i> 0 এবং nums[i] =nums[i - 1], তাহলে পরবর্তী অংশটি এড়িয়ে যান এবং চালিয়ে যান
- l :=i + 1 এবং r :=সংখ্যার দৈর্ঘ্য – 1
- যখন l
- সমষ্টি :=সংখ্যার যোগফল[i], সংখ্যা[l] এবং সংখ্যা[r]
- যদি যোগফল <0, তারপর l :=l + 1, অন্যথায় যখন যোগফল> 0, তারপর r :=r – 1
- অন্যথায় রেস অ্যারেতে nums[i], nums[l], nums[r] ঢোকান
- যখন l <সংখ্যার দৈর্ঘ্য – 1 এবং সংখ্যা[l] =সংখ্যা[l + 1]
- l 1 দ্বারা বাড়ান
- যখন r> 0 এবং nums[r] =nums[r - 1]
- r 1 দ্বারা হ্রাস করুন
- l 1 দ্বারা বাড়ান এবং r 1 দ্বারা হ্রাস করুন
উদাহরণ(পাইথন)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
class Solution(object): def threeSum(self, nums): nums.sort() result = [] for i in range(len(nums)-2): if i> 0 and nums[i] == nums[i-1]: continue l = i+1 r = len(nums)-1 while(l<r): sum = nums[i] + nums[l] + nums[r] if sum<0: l+=1 elif sum >0: r-=1 else: result.append([nums[i],nums[l],nums[r]]) while l<len(nums)-1 and nums[l] == nums[l + 1] : l += 1 while r>0 and nums[r] == nums[r - 1]: r -= 1 l+=1 r-=1 return result ob1 = Solution() print(ob1.threeSum([-1,0,1,2,-1,-4]))
ইনপুট
৷[-1,0,1,2,-1,-4]
আউটপুট
[[-1,-1,2],[-1,0,1]]