मान लीजिए कि हमारे पास संख्याओं की एक सरणी है। यह एन पूर्णांकों को संग्रहीत करता है, सरणी में ए, बी, सी तत्व हैं, जैसे कि ए + बी + सी =0। सरणी में सभी अद्वितीय ट्रिपल खोजें जो स्थिति को संतुष्ट करता है। तो अगर सरणी [-1,0,1,2,-1,-4] की तरह है, तो परिणाम [[-1, 1, 0], [-1, -1, 2]]होगा। पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- सरणी संख्याओं को क्रमबद्ध करें, और एक सरणी रेस परिभाषित करें
- मैं के लिए 0 से लेकर अंकों की लंबाई तक - 3
- अगर मैं> 0 और अंक [i] =अंक [i - 1], तो अगला भाग छोड़ें और जारी रखें
- l :=i + 1 और r :=अंकों की लंबाई – 1
- जबकि एल <आर
- योग:=अंकों का योग[i], अंक[l] और अंक[r]
- यदि योग <0, तो l :=l + 1, अन्यथा जब योग> 0, तो r :=r – 1
- अन्यथा nums[i], nums[l], nums[r] को रेस ऐरे में डालें
- जबकि l <अंकों की लंबाई – 1 और अंक[l] =अंक [l + 1]
- 1 से l बढ़ाएँ
- जबकि 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]]