हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो पहले तर्क के रूप में संख्याओं की एक सरणी और दूसरे तर्क के रूप में एक संख्या लेता है। फ़ंक्शन को तब सरणी से तीन ऐसी संख्याएं चुननी चाहिए, (यदि वे मौजूद हैं) जिसका योग दूसरे तर्क द्वारा निर्दिष्ट संख्या के बराबर है।
फ़ंक्शन को अंत में ऐसे सभी ट्रिपल के सरणियों की एक सरणी वापस करनी चाहिए यदि वे मौजूद हैं, अन्यथा एक खाली सरणी।
उदाहरण के लिए -
यदि इनपुट सरणी और संख्या है -
const arr = [2, 5, 7, 8, 9, 11, 1, 6]; const sum = 22;
तब आउटपुट होना चाहिए -
const output = [ [ 2, 9, 11 ], [ 5, 6, 11 ], [ 5, 8, 9 ], [ 6, 7, 9 ] ];
उदाहरण
इसके लिए कोड होगा -
const arr = [2, 5, 7, 8, 9, 11, 1, 6]; const sum = 22; const threeSum = (arr = [], sum) => { arr.sort((a,b) => a - b); const res = []; for(let i=0; i < arr.length - 2; i++){ if(arr[i] != arr[i-1]){ let left = i + 1; let right = arr.length - 1; while (left < right){ const curr = arr[i] + arr[left] + arr[right]; if (curr === sum){ res.push([arr[i], arr[left], arr[right]]); while(arr[left] == arr[left + 1]) left ++ while(arr[right] == arr[right - 1]) right -- // making sure our solution set does not contain duplicate res left ++; right --; } else if(curr < sum) { left ++ } else if(curr > sum){ right -- }; }; }; }; return res }; console.log(threeSum(arr, sum));
आउटपुट
और कंसोल में आउटपुट होगा -
[ [ 2, 9, 11 ], [ 5, 6, 11 ], [ 5, 8, 9 ], [ 6, 7, 9 ] ]