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

C++ में ऐरे के अधिकतम तत्वों की गिनती जिनका निरपेक्ष अंतर K से अधिक नहीं है


हमें एक ऐरे दिया गया है, मान लीजिए arr[] पूर्णांक तत्वों का किसी भी दिए गए आकार का और एक पॉजिटिव इंटीजर k, और कार्य उन तत्व जोड़ों की गिनती करना है जिनका निरपेक्ष अंतर दिए गए इंटीजर k से अधिक नहीं है।

ऐरे एक प्रकार की डेटा संरचना है जो एक ही प्रकार के तत्वों का निश्चित आकार का अनुक्रमिक संग्रह स्टोर कर सकती है।

उदाहरण

इनपुट: arr[] = {2, 3, 6, 12, 14}, k = 5
आउटपुट: गिनती = 3
व्याख्या: अधिकतम निरपेक्ष अंतर 5 से अधिक न होने वाले जोड़े: (2,3), (2,6), (3,6) यानी {2, 3, 6} इसलिए गिनती 3 है।

इनपुट: arr[] = {2, 3, 6, 12, 14}, k = 10
आउटपुट: गिनती = 4
व्याख्या: जोड़े: (2,3), (2,6), (3,6), (2,12), (3,12), (6,12) यानी {2, 3, 6, 12} इसलिए अधिकतम तत्व 4 हैं।

इनपुट: arr[] = {2, 3, 6, 12, 14}, k = 0
आउटपुट: गिनती = 0
व्याख्या: कोई जोड़ा नहीं जिसका अंतर 0 हो।

उपयोग किया गया दृष्टिकोण

  1. ऐरे arr[] और पॉजिटिव इंटीजर k बनाएं।
  2. length() फंक्शन का उपयोग करके ऐरे की लंबाई कैलकुलेट करें।
  3. एक अस्थायी वेरिएबल लें जो तत्वों की गिनती स्टोर करेगा।
  4. दो अस्थायी वेरिएबल first और last घोषित करें और 0 से इनिशियलाइज़ करें।
  5. ऐरे को सॉर्ट करने के लिए sort मेथड कॉल करें।
  6. i = 0 से size-1 तक लूप शुरू करें।
  7. लूप के अंदर, while j < size AND arr[j] <= arr[i] + k शुरू करें।
  8. व्हाइल के अंदर, जांचें IF count < j-i तो count = j-i सेट करें और first = i, last = j।
  9. गिनती लौटाएं।
  10. परिणाम प्रिंट करें।

C++ कार्यान्वयन

#include <iostream>
#include <algorithm>
using namespace std;

int countmax(int arr[], int size, int K) {
    int result = 0;
    int i = 0, j = 0;
    int beg = 0, end = 0;
    
    // ऐरे को सॉर्ट करें
    sort(arr, arr + size);
    
    // अधिकतम तत्व खोजें
    for (i = 0; i < size; i++) {
        // उन सभी तत्वों को गिनें जो रेंज में हैं
        while (j < size && arr[j] <= arr[i] + K)
            j++;
        if (result < (j - i)) {
            result = (j - i);
            beg = i;
            end = j;
        }
    }
    // अधिकतम गिनती लौटाएं
    return result;
}

int main() {
    int arr[] = {2, 3, 6, 12, 14};
    int size = sizeof(arr) / sizeof(arr[0]);
    int K = 5;
    cout << "count is " << countmax(arr, size, K) << endl;
    return 0;
}

आउटपुट

count is 3
  1. C++ में उस नोड को ढूंढें जिसका X के साथ निरपेक्ष अंतर न्यूनतम मान देता है C++ में उस नोड को ढूंढें जिसका X के साथ निरपेक्ष अंतर न्यूनतम मान देता है

    मान लीजिए हमारे पास एक ट्री है, और सभी नोड्स के वजन और एक पूर्णांक x है। हमें नोड i ढूंढना है, जैसे कि |weight[i] - x| न्यूनतम हो। यदि ग्राफ नीचे की तरह है, और x = 15 आउटपुट 3 होगा। अब विभिन्न नोड्स के लिए, यह नीचे की तरह होगा: नोड 1, |5 – 15| = 10 नोड 2, |10 – 15| = 5 नोड 3, |11 – 15| = 4 नोड 4, |

  1. - C++ में ऐरे के सम और विषम इंडेक्स वाले तत्वों का निरपेक्ष अंतर

    यहां हम देखेंगे कि ऐरे में सम और विषम इंडेक्स वाले तत्वों के निरपेक्ष अंतर कैसे प्राप्त करें। निरपेक्ष अंतर इंगित करता है कि यदि किसी जोड़े का अंतर ऋणात्मक है, तो निरपेक्ष मान लिया जाएगा। उदाहरण के लिए, संख्याएं हैं {1, 2, 3, 4, 5, 6, 7, 8, 9}। तो सम स्थान वाले तत्व हैं 1, 3, 5, 7, 9 (0 से शुरू), और

  1. - C++ में ऐरे के सभी क्रमागत युग्म तत्वों का निरपेक्ष अंतर

    इस समस्या में हम देखेंगे कि ऐरे में प्रत्येक युग्म के तत्वों के बीच निरपेक्ष अंतर कैसे प्राप्त करें। यदि n तत्व हैं, तो परिणामी ऐरे में n-1 तत्व होंगे। मान लीजिए तत्व हैं {8, 5, 4, 3}। परिणाम होगा |8-5| = 3, फिर |5-4| = 1, |4-3| = 1। एल्गोरिदम pairDiff(arr, n) begin res := परिणाम रखने के लिए एक