समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो संख्याओं की एक सरणी, arr, को पहला और एकमात्र तर्क के रूप में लेता है।
हमारे फ़ंक्शन को इनपुट के लिए एक नई सरणी बनानी चाहिए जिसमें प्रत्येक संबंधित तत्व वर्तमान तत्व से अगले बड़े तत्व की दूरी हो, और यदि वर्तमान तत्व के दाईं ओर कोई बड़ा तत्व नहीं है, तो हमें उस संबंधित तत्व के लिए res सरणी में 0 डालना चाहिए और अंत में हमें यह सरणी वापस करनी चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है
इनपुट
const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];
आउटपुट
const output = [1, 1, 2, 1, 3, 1, 1, 1, 0, 0];
आउटपुट व्याख्या
क्योंकि 12 से अगला बड़ा तत्व 13 है, 1 ब्लॉक दूर,
13 से अगला बड़ा 14 है, 1 ब्लॉक दूर,
14 से अगला बड़ा 16 है, 2 ब्लॉक दूर और इसी तरह।
उदाहरण
const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];
const findNextGreater = (arr = []) => {
const stack = [];
const res = new Array(arr.length).fill(0);
for (let i = 0; i < arr.length; i++) {
while (arr[i] > arr[stack[stack.length - 1]] && stack.length > 0) {
const index = stack.pop();
res[index] = i - index;
}
stack.push(i);
}
return res;
};
console.log(findNextGreater(arr));
आउटपुट
[1, 1, 2, 1, 3, 1, 1, 1, 0, 0]