मान लीजिए, हमारे पास इस तरह की संख्याओं की एक सरणी है -
const arr = [1, 2, 3, 4, 5];
हर बार एक तत्व कम लेते हुए, इस सरणी को इस तरह अलग किया जा सकता है -
[1, 2, 3, 4, 5] [2, 3, 4, 5] [3, 4, 5] [4, 5] [5] []
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो ऐसी एक सरणी लेता है। फ़ंक्शन को ऊपर वर्णित तरीके से सरणी को अलग करना चाहिए।
फिर फ़ंक्शन को इन भागों के संबंधित योगों वाली एक सरणी का निर्माण करना चाहिए और उस सरणी को वापस करना चाहिए।
इसलिए, इस सरणी के लिए, आउटपुट इस तरह दिखना चाहिए -
const output = [15, 14, 12, 9, 5 0];
हम इस समस्या को हल करने के लिए डायनामिक प्रोग्रामिंग का उपयोग करेंगे। हम पहले ओ (एन) समय में पूर्ण सरणी के योग की गणना करेंगे, जो अंततः सरणी का पहला तत्व बन जाएगा। फिर एक और पुनरावृत्ति में, हम आउटपुट सरणी तत्व प्राप्त करने के लिए संबंधित तत्वों को घटाते रहेंगे। इस तरह हम इस समस्या को O(n) समय और O(1) स्थान में हल कर सकते हैं।
उदाहरण
const arr = [1, 2, 3, 4, 5]; const sumArray = (arr = []) => arr.reduce((a, b) => a + b, 0); const partialSum = (arr = []) => { let sum = sumArray(arr); const res = [sum]; for(let i = 0; i < arr.length; i++){ const el = arr[i]; sum -= el; res.push(sum); }; return res; }; console.log(partialSum(arr));
आउटपुट
यह निम्नलिखित आउटपुट देगा -
[ 15, 14, 12, 9, 5, 0 ]