समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो पहली आर्ग्युमेंट के रूप में पूर्णांकों की एक सरणी arr और दूसरी आर्ग्युमेंट के रूप में एक पूर्णांक target लेता है।
सरणी में प्रत्येक पूर्णांक के लिए, हमारा फ़ंक्शन या तो '+' या '-' असाइन कर सकता है।
हमारे फ़ंक्शन को यह पता लगाना चाहिए कि सरणी के पूर्णांकों का योग लक्ष्य योग target के बराबर बनाने के लिए '+' और '-' असाइन करने के कुल कितने तरीके मौजूद हैं।
उदाहरण
यदि फ़ंक्शन का इनपुट है:
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