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

C++ में सॉर्टेड एरे में निरपेक्ष विशिष्ट गिनती


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

विशिष्ट गिनती उन तत्वों की संख्या है जो समान नहीं हैं।

निरपेक्ष विशिष्ट गिनती तत्वों के निरपेक्ष मान की विशिष्ट गिनती है यानी चिह्न के बिना मान (अनसाइन्ड मान)।

इस प्रोग्राम में हम सॉर्टेड एरे में निरपेक्ष विशिष्ट गिनती ज्ञात करेंगे। यानी हम एरे के प्रत्येक तत्व के निरपेक्ष मान पर विचार करते हुए विशिष्ट मानों की संख्या गिनेंगे।

उदाहरण के लिए,

इनपुट: [-3, 0, 3, 6] आउटपुट: 3

एरे में 3 विशिष्ट निरपेक्ष मान हैं, तत्व 0, 3, और 6 हैं।

इसे हल करने के लिए हमारे पास तरीके हैं, विभिन्न तरीकों का उपयोग करके।

सेट का उपयोग करके

एक सेट में हमेशा विशिष्ट तत्व होते हैं। तो हम सेट में निरपेक्ष मानों की जांच करेंगे और यदि यह उपलब्ध नहीं है तो हम तत्व को सेट में जोड़ देंगे। और सेट का आकार वापस करेंगे।

एल्गोरिदम -

  • एरे के समान डेटा प्रकार का एक सेट बनाएं।

  • प्रत्येक तत्व का निरपेक्ष मान ज्ञात करें और तत्वों को एरे में संग्रहीत करें। सेट एक ही मान संग्रहीत करेगा भले ही कई मान मिलें।

  • सभी तत्व दर्ज होने के बाद। सेट की लंबाई वापस करें। यह एरे में विशिष्ट तत्वों की संख्या देगा।

उदाहरण

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

int main() {
    int arr[] = {-3, 0, 2, 6};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << "Count of absolute distinct values : ";
    unordered_set<int> s;
    for (int i = 0; i < n; i++)
        s.insert(abs(arr[i]));
    int nof = s.size();
    cout << nof;
    return 0;
}

आउटपुट

Count of absolute distinct values : 4

एरे चेक और काउंट वेरिएबल का उपयोग करके

यह विधि सेट के बजाय केवल एक वेरिएबल का उपयोग करती है। हम आपको एरे के विशिष्ट तत्व को गिनने के लिए एक काउंट वेरिएबल देंगे।

उदाहरण

#include <iostream>
using namespace std;

int main() {
    int arr[] = {-5, -1, 0, 5, 8};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << "Count of absolute distinct values : ";
    int count = n;
    int i = 0, j = n - 1, sum = 0;
    while (i < j) {
        while (i != j && arr[i] == arr[i + 1])
            count--, i++;
        while (i != j && arr[j] == arr[j - 1])
            count--, j--;
        if (i == j)
            break;
        sum = arr[i] + arr[j];
        if (sum == 0) {
            count--;
            i++, j--;
        }
        else if(sum < 0)
            i++;
        else
            j--;
    }
    cout << count;
    return 0;
}

आउटपुट

Count of absolute distinct values : 4

  1. - C++ में घूर्णित क्रमबद्ध सरणी II में खोज (Search in Rotated Sorted Array II)

    मान लीजिए हमारे पास एक सरणी है जो आरोही क्रम में क्रमबद्ध है। लेकिन उसे किसी अज्ञात पिवट पर घुमा दिया गया है। उदाहरण के लिए, यदि सरणी [0,0,1,2,2,5,6] है, तो यह [2,5,6,0,0,1,2] बन सकती है। हमारे पास एक लक्ष्य मान है जिसे खोजना है। यदि वह सरणी में मिलता है, तो true वापस करें, अन्यथा false। यदि सरणी [

  1. - C++ में रोटेटेड सॉर्टेड सरणी में रोटेशन काउंट ढूंढना

    मान लीजिए हमारे पास एक सरणी है, जो रोटेटेड सॉर्टेड सरणी है। हमें उन रोटेशन की संख्या ढूंढनी है जो सरणी को सॉर्ट करने के लिए आवश्यक हैं। (हम रोटेशन दाएं से बाएं मानेंगे।)मान लीजिए सरणी ऐसी है: {15, 17, 1, 2, 6, 11}, तो हमें सरणी को दो बार रोटेट करना होगा ताकि यह सॉर्ट हो जाए। अंतिम क्रम {1, 2, 6, 11,

  1. - C++ प्रोग्राम: सॉर्टेड ऐरे कार्यान्वयन (सिलेक्शन सॉर्ट)

    सॉर्टेड ऐरे ऐरे जिसमें तत्व क्रमबद्ध क्रम में हों (संख्यात्मक, वर्णानुक्रमिक, आदि)। कई सॉर्टिंग एल्गोरिदम: बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज सॉर्ट, क्विक सॉर्ट, हीप सॉर्ट। सिलेक्शन सॉर्ट अनसॉर्टेड भाग में सबसे छोटा तत्व ढूंढकर उसे शुरुआत से स्वैप करता है। O(n²) समय जटिलता। C++ प्रोग