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

O(n) में एक सरणी में डुप्लिकेट खोजें और C++ में O(1) अतिरिक्त स्थान का उपयोग करें


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

इसे हल करने के लिए, हमें इन चरणों का पालन करना होगा -

  • सूची में प्रत्येक तत्व ई के लिए, निम्न चरणों का पालन करें -
    • चिह्न :=A[e का पूर्ण मान]
    • यदि चिन्ह धनात्मक है, तो उसे ऋणात्मक बना दें
    • अन्यथा, यह दोहराव है।

उदाहरण

#include<iostream>
#include<cmath>
using namespace std;
void findDuplicates(int arr[], int size) {
   for (int i = 0; i < size; i++) {
      if (arr[abs(arr[i])] >= 0)
         arr[abs(arr[i])] *= -1;
      else
         cout << abs(arr[i]) << " ";
   }
}
int main() {
   int arr[] = {5, 2, 3, 5, 1, 6, 2, 3, 4, 1};
   int n = sizeof(arr)/sizeof(arr[0]);
   findDuplicates(arr, n);
}

आउटपुट

5 2 3 1

  1. C++ में डुप्लीकेट सबट्री खोजें

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें सभी डुप्लिकेट सबट्री खोजने होंगे। इसलिए प्रत्येक प्रकार के डुप्लिकेट सबट्री के लिए, हमें उनमें से किसी एक का रूट नोड वापस करना होगा। तो मान लीजिए हमारे पास − . जैसा एक पेड़ है डुप्लीकेट सबट्री हैं - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  1. अंकगणित माध्य का उपयोग करके हार्मोनिक माध्य ज्ञात करें और C++ का उपयोग करके ज्यामितीय माध्य ज्ञात करें।

    यहां हम देखेंगे कि अंकगणित माध्य और ज्यामितीय माध्य का उपयोग करके हार्मोनिक माध्य कैसे प्राप्त करें। इन तीनों साधनों का सूत्र नीचे जैसा है - अंकगणित माध्य - (a + b)/2 ज्यामितीय माध्य - $$\sqrt{\lgroup a*b\rgroup}$$ हार्मोनिक मीन − 2ab/(a+b) हार्मोनिक माध्य को इस सूत्र का उपयोग करके अंकगणित माध्य

  1. सी ++ का उपयोग करके एक क्रमबद्ध सरणी में फर्श और छत खोजें।

    यहां हम देखेंगे कि कैसे एक क्रमबद्ध सरणी में फर्श और छत का पता लगाया जाए। फ्लोर वैल्यू बड़ा तत्व है जो x से छोटा या उसके बराबर है, और सीलिंग वैल्यू सबसे छोटा मान है जो x से बड़ा है। यदि सरणी A =[5, 6, 8, 9, 6, 5, 5, 6], और x 7 है, तो न्यूनतम मान 6 है, और अधिकतम मूल्य 8 है। इस समस्या को हल करने के ल