रेंज योग
रेंज योग रेंजसम (i, j) को इंडेक्स i और j (i ≤ j), समावेशी के बीच एक सरणी में तत्वों के योग के रूप में परिभाषित किया गया है।
समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो इंटीजर की एक सरणी लेता है, एआर, पहले तर्क के रूप में और दो नंबर, दूसरे और तीसरे तत्व के रूप में ऊपरी और निचला।
हमारा कार्य सीमा [ऊपरी, निचले], (दोनों समावेशी) के बीच स्थित सीमा राशियों की संख्या को वापस करने वाला है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = [1, 4, 3]; const upper = 5; const lower = 2;
तब आउटपुट होना चाहिए -
const output = 3;
उदाहरण
इसके लिए कोड होगा -
const arr = [1, 4, 3]; const upper = 5; const lower = 2; const countRangeSum = (arr = [], lower, upper) => { const sums = [0]; let res = 0; let last = 0; let firstge = value => { let l = 0, r = sums.length, m; do { m = Math.floor((r + l) / 2); sums[m] < value ? l = m : r = m; } while (r >= l + 2); while (r > 0 && sums[r - 1] >= value ) { r -= 1; } return r; }; arr.forEach(num => { last += num; res += firstge(last - lower + 1) - firstge(last - upper); sums.splice(firstge(last), 0, last); }); return res; }; console.log(countRangeSum(arr, lower, upper));
आउटपुट
कंसोल में आउटपुट होगा -
3