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

C++ में k से कम या बराबर सभी एलिमेंट्स को एक साथ लाने के लिए न्यूनतम स्वैप


समस्या कथन

n पॉजिटिव पूर्णांकों का एक ऐरे और एक संख्या k दी गई है। उन सभी संख्याओं को एक साथ लाने के लिए आवश्यक न्यूनतम स्वैप की संख्या ढूंढें जो k से कम या बराबर हैं।

उदाहरण

यदि इनपुट ऐरे है = {1, 5, 4, 7, 2, 10} और k = 6 तो 1 स्वैप आवश्यक है यानी एलिमेंट 7 को 2 से स्वैप करें।

एल्गोरिदम

  • उन सभी एलिमेंट्स को गिनें जो 'k' से कम या बराबर हैं। मान लें कि गिनती 'cnt' है
  • लंबाई 'cnt' की विंडो के लिए टू पॉइंटर तकनीक का उपयोग करके, हर बार ट्रैक करें कि इस रेंज में कितने एलिमेंट्स 'k' से बड़े हैं। मान लें कि कुल गिनती 'outOfRange' है।
  • चरण 2 को लंबाई 'cnt' की हर विंडो के लिए दोहराएं और उनमें 'outOfRange' की गिनती का न्यूनतम लें। यह अंतिम उत्तर होगा।

उदाहरण

#include 
using namespace std;

int getMinSwaps(int *arr, int n, int k) {
    int cnt = 0;
    for (int i = 0; i < n; ++i) {
        if (arr[i] <= k) {
            ++cnt;
        }
    }
    int outOfRange = 0;
    for (int i = 0; i < cnt; ++i) {
        if (arr[i] > k) {
            ++outOfRange;
        }
    }
    int result = outOfRange;
    for (int i = 0, j = cnt; j < n; ++i, ++j) {
        if (arr[i] > k) {
            --outOfRange;
        }
        if (arr[j] > k) {
            ++outOfRange;
        }
        result = min(result, outOfRange);
    }
    return result;
}

int main() {
    int arr[] = {1, 5, 4, 7, 2, 10};
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 6;
    cout << "Minimum swaps = " << getMinSwaps(arr, n, k) << endl;
    return 0;
}

जब आप उपरोक्त प्रोग्राम को कंपाइल और 실행 करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -

आउटपुट

Minimum swaps = 1

  1. C++ में मिन हीप में मान x से छोटे सभी नोड्स प्रिंट करना C++ में मिन हीप में मान x से छोटे सभी नोड्स प्रिंट करना

    इस समस्या में, हमें एक मिन हीप और एक मान x दिया गया है और हमें x से छोटे सभी नोड्स प्रिंट करने हैं। मिन हीप मिन हीप एक विशेष प्रकार का बाइनरी ट्री है जिसमें हर नोड का मान उसके चाइल्ड नोड के मान से कम होता है। उदाहरण X = 45 आउटपुट - 2 4 7 10 17 22 33 34 अब, इस समस्या को हल करने के लिए हमें पूरे

  1. - C++ में सभी तत्वों को समान बनाने के लिए न्यूनतम मूव्स

    समस्या कथन N तत्वों की एक सरणी और एक पूर्णांक K दिया गया है। दी गई सरणी पर निम्न ऑपरेशन किसी भी संख्या में बार करना अनुमत है: K-वें तत्व को सरणी के अंत में डालें और सरणी के पहले तत्व को हटाएं। कार्य सरणी के सभी तत्वों को समान बनाने के लिए आवश्यक न्यूनतम मूव्स की संख्या ढूंढना है। यदि संभव नहीं

  1. - C++ में n से कम या बराबर सभी फैक्टोरियल संख्याएं खोजें

    यहां हम देखेंगे कि n से कम या बराबर सभी फैक्टोरियल संख्याओं को कैसे प्रिंट किया जाए। एक संख्या N को फैक्टोरियल संख्या कहा जाता है यदि यह किसी धनात्मक संख्या का फैक्टोरियल है। इसलिए कुछ फैक्टोरियल संख्याएं हैं: 1, 2, 6, 24, 120। फैक्टोरियल संख्याओं को प्रिंट करने के लिए, हमें सीधे फैक्टोरियल खोजने क