समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो पूर्णांकों की एक सरणी arr को पहले और एकमात्र आर्गुमेंट के रूप में लेता है।
मान लीजिए सरणी में दो इंडेक्स, i और j हैं जो निम्न शर्तों को पूरा करते हैं -
i < j, और
arr[i] <= arr[j]
ऐसे सभी इंडेक्स टुपल्स (i, j) में से, हमारे फ़ंक्शन को अंतर j - i वापस करना चाहिए, जहां यह अधिकतम हो।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = [6, 0, 8, 2, 1, 5];
तो आउटपुट होना चाहिए -
const output = 4;
आउटपुट व्याख्या
अधिकतम अंतर (i, j) = (1, 5) पर प्राप्त होता है: arr[1] = 0 और arr[5] = 5।
उदाहरण
इसके लिए कोड होगा -
const arr = [6, 0, 8, 2, 1, 5];
const maximumDifference = (arr = []) => {
let max = 0;
const stack = [0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < arr[stack[stack.length - 1]]) {
stack.push(i);
}
}
for (let i = arr.length - 1; i >= 0; i--) {
while (arr[i] >= arr[stack[stack.length - 1]]) {
max = Math.max(max, i - stack.pop());
}
}
return max;
};
console.log(maximumDifference(arr));
आउटपुट
कंसोल में आउटपुट होगा -
4