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

O(n) समय और O(1) अतिरिक्त स्थान में डुप्लिकेट खोजें - C++ में 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++ STL में सेट ढूंढें () फ़ंक्शन सेट कंटेनर में खोजे गए तत्व के लिए एक पुनरावर्तक देता है। इटरेटर सेट में अंतिम तत्व के ठीक बाद की स्थिति को इंगित करता है, यदि तत्व नहीं मिला है। एल्गोरिदम Begin    Define function printS() to print elements of set container.    initialize an emp

  1. पायथन में O(n) समय और O(1) स्थान में BST का माध्यिका ज्ञात कीजिए

    मान लीजिए कि हमारे पास बाइनरी सर्च ट्री (BST) है, तो हमें इसका माध्यिका ज्ञात करना होगा। हम नोड्स की सम संख्या के लिए जानते हैं, माध्यिका =((n/2th नोड + (n+1)/2th नोड) /2 विषम संख्या में नोड्स के लिए, माध्यिका =(n+1)/2th नोड। तो, अगर इनपुट पसंद है तो आउटपुट 7 . होगा इसे हल करने के लिए, हम इन चर

  1. पायथन में O(n) समय और O(1) अतिरिक्त स्थान में अधिकतम दोहराई जाने वाली संख्या ज्ञात करें

    मान लीजिए कि हमारे पास आकार n की एक सरणी है, यदि सरणी में तत्व 0 से k-1 तक हैं। जहाँ k को एक धनात्मक पूर्णांक और k <=n के रूप में निरूपित किया जाता है। हमें इस सरणी में अधिकतम दोहराई जाने वाली संख्या ज्ञात करनी है। इसलिए, यदि इनपुट k =8 और A =[3, 4, 4, 6, 4, 5, 2, 8] जैसा है, तो आउटपुट 4 होगा। इसे