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

C++ में क्रमबद्ध सरणी में फिक्स्ड पॉइंट (मान सूचकांक के बराबर) ढूंढें


समस्या विवरण

एक क्रमबद्ध सरणी में फिक्स्ड पॉइंट वह तत्व है जिसका मान उसके सूचकांक के बराबर होता है। सरणी में नकारात्मक संख्याएं हो सकती हैं। फिक्स्ड पॉइंट मिलने पर उसका मान वापस करें, अन्यथा -1 वापस करें।

हल दृष्टिकोण

मानक बाइनरी खोज का उपयोग करके O(log n) समय में हल करें:

  • मध्य तत्व जांचें: यदि mid == arr[mid] तो फिक्स्ड पॉइंट मिल गया
  • यदि mid > arr[mid] तो दाईं ओर खोजें
  • यदि mid < arr[mid] तो बाईं ओर खोजें

यह दृष्टिकोण तब काम करता है जब सरणी में डुप्लिकेट नहीं होते।

उदाहरण कोड

#include <iostream>
using namespace std;

int getFixedPoint(int arr[], int left, int right) {
    if (right >= left) {
        int mid = (left + right) / 2;
        if (mid == arr[mid]) return mid;
        if (mid > arr[mid])
            return getFixedPoint(arr, (mid + 1), right);
        else
            return getFixedPoint(arr, left, (mid - 1));
    }
    return -1;
}

int main() {
    int arr[] = {-10, -1, 0, 3, 10, 11, 9, 50, 56};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << "Fixed Point: " << getFixedPoint(arr, 0, n-1);
    return 0;
}

आउटपुट

Fixed Point: 3
  1. C++ का उपयोग करके ब्रैकेट की स्ट्रिंग में समान बिंदु खोजें C++ का उपयोग करके ब्रैकेट की स्ट्रिंग में समान बिंदु खोजें

    यहां हम देखेंगे कि ब्रैकेट की स्ट्रिंग में समान बिंदु कैसे प्राप्त करें। समान बिंदु वह सूचकांक I है, जिसके पहले खुलने वाले ब्रैकेट की संख्या उसके बाद बंद होने वाले ब्रैकेट की संख्या के बराबर होती है। मान लीजिए एक ब्रैकेट स्ट्रिंग है (()))(()()()))), यदि हम ध्यान से देखें, तो हम पा सकते हैं कि इंडेक

  1. - C++ में डुप्लिकेट तत्वों वाली सरणी में फिक्स्ड पॉइंट ढूंढें

    समस्या विवरण एक क्रमबद्ध सरणी में फिक्स्ड पॉइंट वह तत्व है जिसका मान उसके सूचकांक के बराबर होता है। सरणी में नकारात्मक संख्याएं और डुप्लिकेट तत्व हो सकते हैं। यदि फिक्स्ड पॉइंट मौजूद है तो उसका मान वापस करें, अन्यथा -1 वापस करें। हल दृष्टिकोण बाइनरी खोज का उपयोग करके O(log n) समय में हल करें। डुप्

  1. - C++ में दिए गए सरणी के एलिमेंट्स के फैक्टोरियल का GCD खोजें

    मान लीजिए हमारे पास N एलिमेंट्स वाली एक सरणी A है। हमें सरणी के सभी एलिमेंट्स के फैक्टोरियल का GCD निकालना है। मान लीजिए एलिमेंट्स {3, 4, 8, 6} हैं, तो फैक्टोरियल का GCD 6 होगा। यहां हम ट्रिक देखेंगे। चूंकि दो संख्याओं का GCD वह सबसे बड़ी संख्या है जो दोनों को विभाजित करती है, तो दो संख्याओं के फैक्