Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में रोटेटेड सॉर्टेड सरणी में अधिकतम तत्व खोजें


एक सॉर्टेड सरणी को किसी अज्ञात पिवट पर रोटेट किया गया है। हमें उस रोटेटेड सरणी में अधिकतम तत्व ढूंढना है।

उदाहरण: [3,4,5,1,2] → अधिकतम 5 है।

समाधान दृष्टिकोण (बाइनरी सर्च)

हम एक संशोधित बाइनरी सर्च का उपयोग करते हैं:

  • low = 0, high = n-1।
  • जब low <= high:
    • mid = low + (high - low)/2।
    • यदि arr[low] < arr[mid]: बायां भाग सॉर्टेड है, अधिकतम दाएं में हो सकता है। ans = max(ans, arr[low]), low = mid + 1।
    • अन्यथा यदि arr[high] > arr[mid]: दायां भाग सॉर्टेड है, अधिकतम बाएं में हो सकता है। ans = max(ans, arr[mid]), high = mid - 1।
    • एज केस: low == mid या high == mid को संभालें।
  • ans वापस करें।

C++ कार्यान्वयन (रिकर्सिव)

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int search(vector& arr, int low, int high) {
        if (low == high) return arr[low];
        int mid = low + (high - low) / 2;
        int ans = 0;
        if (arr[low] < arr[mid]) {
            ans = max(arr[low], search(arr, mid, high));
        } else if (arr[high] > arr[mid]) {
            ans = max(arr[mid], search(arr, low, mid));
        } else if (arr[low] == arr[mid]) {
            ans = max(arr[low], search(arr, low + 1, high));
        } else if (arr[high] == arr[mid]) {
            ans = max(arr[high], search(arr, low, high - 1));
        }
        return ans;
    }
    int findMax(vector& nums) {
        return search(nums, 0, nums.size() - 1);
    }
};

int main() {
    Solution ob;
    vector v = {4,5,5,5,6,8,2,3,4};
    cout << ob.findMax(v);
    return 0;
}

इनपुट

[4,5,5,5,6,8,2,3,4]

आउटपुट

8
  1. ग्रिड में रोशन सेल्स की संख्या ज्ञात करने का C++ प्रोग्राम ग्रिड में रोशन सेल्स की संख्या ज्ञात करने का C++ प्रोग्राम

    मान लीजिए h × w आयाम का एक ग्रिड दिया गया है। ग्रिड की सेल्स में बल्ब या बाधाएँ हो सकती हैं। एक बल्ब सेल स्वयं और अपने दाएँ, बाएँ, ऊपर, नीचे की सेल्स को रोशन करता है। प्रकाश सेल्स के माध्यम से चमकता है जब तक कि कोई बाधा सेल इसे न रोक दे। बाधा सेल न तो रोशन हो सकती है और न ही प्रकाश को गुजरने देती ह

  1. C++ में ट्री की अधिकतम गहराई या ऊंचाई खोजने का प्रोग्राम C++ में ट्री की अधिकतम गहराई या ऊंचाई खोजने का प्रोग्राम

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य दी गई ट्री की अधिकतम गहराई या ऊंचाई खोजने के लिए एक प्रोग्राम लिखना है। आइए एक उदाहरण से समस्या को समझते हैं, ट्री की ऊंचाई 3 है। ट्री की अधिकतम ऊंचाई खोजने के लिए, हम उसके लेफ्ट और राइट सबट्री की ऊंचाई की जांच करेंगे और दोनों के अधिकत

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्