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

C++ में O(1) अतिरिक्त स्थान और O(n) समय में सरणी में सभी तत्वों की आवृत्ति गिनें


हमें 1 से n तक के मानों वाली तत्वों की एक सरणी दी गई है। कुछ तत्व दोहराए गए हैं, और कुछ गायब हैं। लक्ष्य O(n) समय और O(1) अतिरिक्त स्थान में सभी तत्वों की आवृत्ति ढूंढना है।

इनपुट

Arr[]= { 1,2,2,3,4,4,4,5 }

आउटपुट

1→ 1, 2 → 2, 3→ 1, 4→ 3, 5→ 5

व्याख्या: उच्चतम तत्व 5 है, आउटपुट सरणी में प्रत्येक तत्व के प्रकट होने की संख्या दिखाता है।

इनपुट

Arr[]= { 1,4,4,5,5,5,5 }

आउटपुट

1→ 1, 2 →0, 3→ 0, 4→ 2, 5→ 4

व्याख्या: उच्चतम तत्व 5 है, आउटपुट सरणी में प्रत्येक तत्व के प्रकट होने की संख्या दिखाता है।

प्रयुक्त दृष्टिकोण

  • नीचे दिया गया प्रोग्राम 1 से 10 के बीच की संख्याओं वाली सरणियों के लिए काम करता है।
  • फ़ंक्शन printfrequency(int arr[],int n) एक सरणी और इसके आकार n को इनपुट के रूप में लेता है और सरणी में मौजूद 1 से 10 के बीच की संख्याओं की संख्या लौटाता है।
  • हम arr[i]=arr[i]-1 बनाते हैं ताकि प्रत्येक इंडेक्स संख्या i की आवृत्ति संग्रहीत करे, 1 इंडेक्स 0 पर संग्रहीत हो और इसी तरह।
  • for लूप का उपयोग करके प्रत्येक आवृत्ति arr[arr[i]%10] पर मूल मान में 10 जोड़ें।
  • यदि संख्या i सरणी में x बार होती है तो x बार 10 जोड़ा जाएगा।
  • अब for लूप का उपयोग करके arr[i]/10 का उपयोग करके सभी तत्वों i+1 की आवृत्ति इंडेक्स i पर प्रिंट करें।

उदाहरण कोड

#include<bits/stdc++.h> using namespace std; void printfrequency(int arr[],int n){ int i=0; //1 बन जाता है 0, 2 बन जाता है 1 .....10 बन जाता है 9 ताकि arr[i] में i की गणना हो for ( i =0; i " << arr[i]/10 << endl; } int main(){ int arr[] = {2, 3, 3, 2, 5, 6, 7, 7, 7, 8, 8, 9, 9}; int n = sizeof(arr)/sizeof(arr[0]); printfrequency(arr,n); return 0; }

आउटपुट

1 -> 0 2 -> 2 3 -> 2 4 -> 0 5 -> 1 6 -> 1 7 -> 3 8 -> 2 9 -> 5 10 -> 0

  1. - C++ प्रोग्राम: O(n) समय और O(1) अतिरिक्त स्थान में डुप्लिकेट ज्ञात करना - सेट 1

    मान लें हमारे पास 0 से n-1 तक की संख्याओं की एक सूची है। एक संख्या को जितनी बार संभव हो उतनी बार दोहराया जा सकता है। हमें बिना किसी अतिरिक्त स्थान के दोहराई जाने वाली संख्याएं ज्ञात करनी हैं। यदि n का मान 7 है, और सूची [5, 2, 3, 5, 1, 6, 2, 3, 4, 5] की तरह है। उत्तर 5, 2, 3 होगा। इसे हल करने के लिए

  1. - C++ में अभाज्य आवृत्ति वाले एरे तत्व

    एरे (Array) समान डेटा प्रकार के तत्वों का एक कंटेनर है। अभाज्य आवृत्ति (Prime Frequencies) का अर्थ है कि एरे के तत्व की घटनाओं की संख्या एक अभाज्य संख्या है। इसलिए, इन परिभाषाओं के आधार पर समस्या अभाज्य आवृत्ति वाले एरे तत्वों को खोजने की है। हमें एक स्ट्रिंग/एरे दिया गया है। हमें वर्णों की आवृत्ति

  1. - पायथन में ऐरे के सभी एलिमेंट्स की फ्रीक्वेंसी गिनें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखेंगे जो ऐरे में सभी एलिमेंट्स की फ्रीक्वेंसी ढूंढता है। हम इसे अलग-अलग तरीकों से कर सकते हैं, आइए उनमें से दो का पता लगाते हैं। डिक्शनरी का उपयोग करना ऐरे इनिशियलाइज़ करें। एक खाली डिक्शनरी इनिशियलाइज़ करें। लिस्ट पर पुनरावृति करें। यदि एलिमेंट डिक्शनरी में नह