समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो संख्याओं की एक सरणी लेता है, एआर, पहले और एकमात्र तर्क के रूप में।
हमारे फ़ंक्शन को इनपुट के लिए एक नई सरणी का निर्माण करना चाहिए जिसमें प्रत्येक संबंधित तत्व वर्तमान तत्व की तुलना में अगले बड़े तत्व की दूरी है, और यदि वर्तमान तत्व के दाईं ओर कोई बड़ा तत्व नहीं है, तो हमें उस संबंधित के लिए 0 को धक्का देना चाहिए res सरणी में तत्व और अंत में हमें इस सरणी को वापस करना चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है
इनपुट
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]