हमें एक फंक्शन लिखना है, जैसे कि थ्रीसम () जो संख्याओं की एक सरणी और एक लक्ष्य में लेता है। यह जाँचता है कि क्या सरणी में कोई तीन संख्याएँ मौजूद हैं जो लक्ष्य योग में जुड़ती हैं, यदि सरणी में ऐसी तीन संख्याएँ मौजूद हैं, तो इसे अपने सूचकांकों को एक सरणी में वापस करना चाहिए अन्यथा इसे -1 वापस करना चाहिए।
दृष्टिकोण
दृष्टिकोण सरल है, हम पहले एक फ़ंक्शन टूसम () लिखेंगे, जो एक सरणी और लक्ष्य योग लेता है और दो संख्याओं के सूचकांकों को वापस करने के लिए रैखिक समय और स्थान लेता है जो कुल लक्ष्य योग को जोड़ते हैं अन्यथा -1।
फिर हम वास्तविक फ़ंक्शन थ्रीसम () लिखते हैं, जो तीसरे तत्व की अनुक्रमणिका को खोजने के लिए सरणी में प्रत्येक तत्व पर पुनरावृति करता है, जिसे जब दो योग () संख्याओं में जोड़ा जाता है तो वास्तविक लक्ष्य तक जुड़ सकता है।
इसलिए, इस तरह हम तीन तत्वों को O(N^2) समय में पा सकते हैं। आइए इसके लिए कोड लिखें -
उदाहरण
const arr = [1,2,3,4,5,6,7,8]; const twoSum = (arr, sum) => { const map = {}; for(let i = 0; i < arr.length; i++){ if(map[sum-arr[i]]){ return [map[sum-arr[i]], i]; }; map[arr[i]] = i; }; return -1; }; const threeSum = (arr, sum) => { for(let i = 0; i < arr.length; i++){ const indices = twoSum(arr, sum-arr[i]); if(indices !== -1 && !indices.includes(i)){ return [i, ...indices]; }; }; return -1; }; console.log(threeSum(arr, 9)); console.log(threeSum(arr, 8)); console.log(threeSum(arr, 13)); console.log(threeSum(arr, 23));
आउटपुट
कंसोल में आउटपुट होगा -
[ 0, 2, 4 ] [ 0, 2, 3 ] [ 0, 4, 6 ] -1