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

C++ में संयोग खोजें


मान लीजिए कि हमारे पास अद्वितीय पूर्णांकों की एक सूची है, जिन्हें अंक कहते हैं। हमें उन पूर्णांकों की संख्या ज्ञात करनी है जो अभी भी एक मानक बाइनरी खोज का उपयोग करके सफलतापूर्वक पाई जा सकती हैं।

तो, अगर इनपुट [2,6,4,3,10] जैसा है, तो आउटपुट 3 होगा, जैसे कि हम 4 को देखने के लिए बाइनरी सर्च का उपयोग करते हैं, हम इसे पहले पा सकते हैं पुनरावृत्ति हम दो पुनरावृत्तियों के बाद 2 और 10 भी ढूंढ सकते हैं।

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

  • फ़ंक्शन सहायता () को परिभाषित करें, यह लक्ष्य, एक सरणी और अंक लेगा,

  • कम :=0

  • उच्च :=अंकों का आकार - 1

  • जबकि कम <=उच्च, करें −

    • मध्य:=निम्न + (उच्च-निम्न)/2

    • यदि अंक [मध्य] लक्ष्य के समान है, तो -

      • सही लौटें

    • अगर अंक [मध्य] <लक्ष्य, तो −

      • कम :=मध्य + 1

    • अन्यथा

      • उच्च :=मध्य - 1

  • झूठी वापसी

  • मुख्य विधि से, निम्न कार्य करें -

  • रिट:=0

  • प्रत्येक तत्व के लिए मैं अंकों में

    • रिट:=रिट + सहायता (i, अंक)

  • वापसी रिट

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool help(int target, vector<int> & nums) {
      int low = 0;
      int high = nums.size() - 1;
      while (low <= high) {
         int mid = low + (high - low) / 2;
         if (nums[mid] == target)
         return true;
         if (nums[mid] < target) {
            low = mid + 1;
         } else {
            high = mid - 1;
         }
      }
      return false;
   }
   int solve(vector<int> & nums) {
      int ret = 0;
      for (int i : nums) {
         ret += help(i, nums);
      }
      return ret;
   }
};
main() {
   Solution ob;
   vector<int> v = {2,6,4,3,10};
   cout << (ob.solve(v));
}

इनपुट

{2,6,4,3,10}

आउटपुट

3

  1. C++ में बाइनरी सर्च ट्री इटरेटर

    मान लीजिए हम बाइनरी ट्री के लिए एक इटरेटर बनाना चाहते हैं। दो तरीके होंगे। अगला () विधि अगले तत्व को वापस करने के लिए है, और hasNext () विधि बूलियन मान वापस करने के लिए है, जो इंगित करेगा कि अगला तत्व मौजूद है या नहीं। तो अगर पेड़ जैसा है - और फ़ंक्शन कॉल का क्रम [अगला (), अगला (), है नेक्स्ट (),

  1. C++ में बाइनरी ट्री टू बाइनरी सर्च ट्री रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का पेड़ है जिसमें पेड़ के प्रत्येक नोड में अधिकतम दो बच्चे नोड हो सकते हैं। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के रूप में जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का वृक्ष है जो निम्नलिखित नियमों का पालन करता है -

  1. सी ++ प्रोग्राम में बाइनरी सर्च?

    द्विआधारी खोज, जिसे अर्ध-अंतराल खोज, लॉगरिदमिक खोज या बाइनरी चॉप के रूप में भी जाना जाता है, एक खोज एल्गोरिथ्म है जो एक क्रमबद्ध सरणी के भीतर लक्ष्य मान की स्थिति का पता लगाता है। बाइनरी खोज लक्ष्य मान की तुलना सरणी के मध्य तत्व से करती है। यदि वे समान नहीं हैं, तो आधा जिसमें लक्ष्य झूठ नहीं बोल सकत