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

दो संख्याओं के बीच न्यूनतम दूरी खोजें C++ में

मान लीजिए हमारे पास एक अनसॉर्टेड ऐरे A है, और दो संख्याएं x और y हैं। हमें A में x और y के बीच न्यूनतम दूरी खोजनी है। ऐरे में डुप्लीकेट तत्व भी हो सकते हैं। तो यदि ऐरे A = [2, 5, 3, 5, 4, 4, 2, 3] है, x = 3 और y = 2, तो 3 और 2 के बीच न्यूनतम दूरी केवल 1 है।

इसे हल करने के लिए, हमें इन चरणों का पालना करना होगा,

  • ऐरे को बाएं से दाएं पार करें और रुकें यदि x या y मिल जाए। फिर उस स्थिति के इंडेक्स को prev में स्टोर करें
  • अब prev इंडेक्स के बाद ऐरे को पार करें, यदि वर्तमान इंडेक्स i का तत्व x या y से मेल खाता है, तो जांचें कि क्या यह A[prev] से अलग है, यदि अलग है, तो न्यूनतम इंडेक्स को अपडेट करें यदि आवश्यक हो, यदि वे अलग हैं, तो prev को अपडेट करें जैसे prev := i

उदाहरण

#include <iostream>
using namespace std;

int findMinDistance(int A[], int n, int x, int y) {
    int i = 0;
    int distance = INT_MAX;
    int prev_index;
    for (i = 0; i < n; i++) {
        if (A[i] == x || A[i] == y) {
            prev_index = i;
            break;
        }
    }
    while (i < n) {
        if (A[i] == x || A[i] == y) {
            if (A[prev_index] != A[i] && (i - prev_index) < distance) {
                distance = i - prev_index;
                prev_index = i;
            } else
                prev_index = i;
        }
        i++;
    }
    return distance;
}

int main() {
    int arr[] = {2, 5, 3, 5, 4, 4, 2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    int x = 3;
    int y = 2;
    cout << "Minimum distance between " << x << " and " << y << " is: " << findMinDistance(arr, n, x, y);
}

आउटपुट

Minimum distance between 3 and 2 is: 1

  1. C++ में दो अलग-अलग गुड नोड्स की किसी भी जोड़ी के बीच सबसे छोटी दूरी खोजें C++ में दो अलग-अलग गुड नोड्स की किसी भी जोड़ी के बीच सबसे छोटी दूरी खोजें

    मान लीजिए हमारे पास N अलग-अलग नोड्स और M एजेज के साथ एक दिया गया वेटेड अनडायरेक्टेड ग्राफ है, कुछ नोड्स गुड नोड्स हैं। हमें किन्हीं दो अलग-अलग गुड नोड्स की जोड़ी के बीच सबसे छोटी दूरी खोजनी है। दिए गए आरेख में पीले नोड्स को गुड नोड्स माना जाता है। उदाहरण के लिए, यदि इनपुट इस तरह का है: तो आउटपुट 11

  1. C++ में बाइनरी ट्री के दो नोड्स के बीच दूरी - O(log n) विधि C++ में बाइनरी ट्री के दो नोड्स के बीच दूरी - O(log n) विधि

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है और हमें Q क्वेरी दी गई हैं। हमारा कार्य C++ में बाइनरी ट्री के दो नोड्स के बीच दूरी - O(log n) विधि को हल करने के लिए एक प्रोग्राम बनाना है।समस्या विवरणप्रत्येक क्वेरी में, हमें बाइनरी ट्री के दो नोड्स दिए गए हैं और हमें दो नोड्स के बीच की दूरी ढूंढनी ह

  1. बाइनरी ट्री के दो नोड्स के बीच की दूरी खोजें C++ में बाइनरी ट्री के दो नोड्स के बीच की दूरी खोजें C++ में

    मान लीजिए हमारे पास कुछ नोड्स के साथ एक बाइनरी ट्री है। हमें दो नोड्स u और v के बीच की दूरी खोजनी है। मान लीजिए ट्री नीचे जैसा है - अब (4, 6) के बीच की दूरी = 4, पथ की लंबाई 4 है, (5, 8) के बीच की लंबाई = 5 आदि। इस समस्या को हल करने के लिए, हम LCA (निम्नतम सामान्य पूर्वज) खोजेंगे, फिर LCA से दो नोड