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

सी ++ में एक क्रमबद्ध सरणी में पूर्ण विशिष्ट गणना?

एक सरणी एक ही डेटा प्रकार के तत्वों का एक संग्रह है। एक क्रमबद्ध सरणी एक सरणी है जिसमें तत्वों को आरोही या अवरोही क्रम में संग्रहीत किया जाता है।

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

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

इस कार्यक्रम में हम एक क्रमबद्ध सरणी में पूर्ण विशिष्ट गणना पाएंगे। यानी अगर सरणी के प्रत्येक तत्व के निरपेक्ष मान पर विचार किया जाता है तो हम अलग-अलग मानों की संख्या की गणना करेंगे।

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

Input : [-3 , 0 , 3 , 6 ]
Output : 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 में खोजें

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

  1. सी ++ में घुमाए गए क्रमबद्ध सरणी में घूर्णन गणना खोजें

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

  1. सी ++ प्रोग्राम सॉर्ट किए गए ऐरे को लागू करने के लिए

    एक क्रमबद्ध सरणी एक सरणी है जिसमें प्रत्येक तत्व को किसी क्रम में क्रमबद्ध किया जाता है जैसे संख्यात्मक, वर्णानुक्रम आदि। संख्यात्मक सरणी को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे बबल सॉर्ट, इंसर्शन सॉर्ट, सेलेक्शन सॉर्ट, मर्ज सॉर्ट, क्विक सॉर्ट, ढेर सॉर्ट आदि। चयन सॉर्ट का उपयोग करके सरणी को सॉर्ट