समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो पहले तर्क के रूप में इंटीजर, एआर की एक सरणी लेता है और एक पूर्णांक, लक्ष्य, दूसरे तर्क के रूप में लेता है।
सरणी में प्रत्येक पूर्णांक के लिए, हमारा फ़ंक्शन या तो इसे '+' या '-' असाइन कर सकता है।
हमारे फ़ंक्शन को यह पता लगाना चाहिए कि लक्ष्य योग, लक्ष्य के बराबर सरणी के पूर्णांकों का योग बनाने के लिए '+', '-' असाइन करने के लिए कुल कितने तरीके मौजूद हैं।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = [1, 1, 1, 1, 1]; const target = 3;
तब आउटपुट होना चाहिए -
const output = 5;
आउटपुट स्पष्टीकरण:
क्योंकि 5 तरीके हैं -
-1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3
उदाहरण
इसके लिए कोड होगा -
const arr = [1, 1, 1, 1, 1]; const target = 3; const waysToSum = (arr = [], target = 1) => { const map = {}; const find = (arr, target, i) => { let val = i + '->' + target; if(map[val] !== undefined){ return map[val]; }; if(i === 0){ if (target === 0 && arr[0] === 0) { return 2 } return arr[0] === target || arr[0] === -target ? 1 : 0 }; map[val] = find(arr, target + arr[i], i - 1) + find(arr, target - arr[i], i - 1); return map[val] }; return find(arr, target, arr.length-1) }; console.log(waysToSum(arr, target));
आउटपुट
और कंसोल में आउटपुट होगा -
5