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