हमें एक फ़ंक्शन लिखना है, मान लीजिए threeSum() जो नंबरों का एक एरे और एक लक्ष्य योग लेता है। यह जांचता है कि क्या एरे में कोई तीन संख्याएं मौजूद हैं जो लक्ष्य योग तक जुड़ती हैं, यदि एरे में ऐसी तीन संख्याएं मौजूद हैं, तो यह उनके इंडेक्स को एक एरे में लौटाना चाहिए अन्यथा यह -1 लौटाना चाहिए।
दृष्टिकोण
दृष्टिकोण सरल है, हम पहले एक फ़ंक्शन twoSum() लिखेंगे, जो एक एरे और एक लक्ष्य योग लेता है और रैखिक समय और स्थान में उन दो संख्याओं के इंडेक्स लौटाता है जो लक्ष्य योग तक जुड़ते हैं अन्यथा -1।
फिर हम वास्तविक फ़ंक्शन threeSum() लिखते हैं, जो एरे में प्रत्येक तत्व पर पुनरावृति करता है ताकि तीसरे तत्व का इंडेक्स ढूंढा जा सके जिसे twoSum() संख्याओं में जोड़ने पर वास्तविक लक्ष्य तक जुड़ सके।
इसलिए, इस तरह हम तीन तत्वों को 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