हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो पहले और एकमात्र तर्क के रूप में संख्याओं की एक सरणी लेता है।
फ़ंक्शन को सरणी से एक ऐसी संख्या ढूंढनी और वापस करनी चाहिए जो दोनों से बड़ी हो, इसके तत्काल दाईं ओर की संख्या और इसके तत्काल बाईं ओर की संख्या। यदि सरणी में एक से अधिक ऐसे तत्व मौजूद हैं, तो हमारे फ़ंक्शन को उनमें से किसी एक को वापस कर देना चाहिए।
उदाहरण के लिए -
यदि इनपुट ऐरे है -
const arr = [3, 6, 7, 9, 8, 2, 5];
तब आउटपुट होना चाहिए -
const output = 9;
चूंकि प्रश्न शिखर तत्व को खोजने की मांग करता है, इसलिए हम द्विआधारी खोज एल्गोरिथम के एक संशोधित संस्करण का उपयोग कर सकते हैं।
इसके लिए चरण होंगे -
-
किसी भी तत्व को देखें।
-
यदि अगला तत्व और पिछला तत्व दोनों वर्तमान से कम हैं, तो हम समाधान ढूंढते हैं, फिर वर्तमान का सूचकांक लौटाते हैं।
-
यदि अगला तत्व धारा से बड़ा है, तो दाईं ओर एक शिखर होना चाहिए, दाईं ओर पुनरावर्ती रूप से देखें।
-
यदि पिछला तत्व धारा से बड़ा है, तो बाईं ओर एक शिखर होना चाहिए, बाईं ओर पुनरावर्ती रूप से देखें।
उदाहरण
निम्नलिखित कोड है -
const arr = [3, 6, 7, 9, 8, 2, 5]; const greaterThanAdjacent = (arr = [], start = 0, end = arr.length) => { let mid = start + Math.floor((end - start) / 2); let curr = arr[mid]; let prev = mid-1 < 0 ? -Infinity : arr[mid-1]; let next = mid+1 > arr.length-1 ? -Infinity : arr[mid+1]; if (curr > prev && curr > next){ return arr[mid]; } if (curr < next){ return greaterThanAdjacent(arr, mid+1, end); } if (curr > next){ return greaterThanAdjacent(arr, start, mid-1); } return null; }; console.log(greaterThanAdjacent(arr));
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
9