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

C++ में K-वें सबसे छोटी जोड़ी दूरी ज्ञात करें

मान लीजिए हमारे पास एक पूर्णांक सरणी है; हमें सभी युग्मों में kth सबसे छोटी दूरी ज्ञात करनी है। एक जोड़ी (ए, बी) की दूरी वास्तव में ए और बी के बीच पूर्ण अंतर है। इसलिए यदि इनपुट [1,3,8] जैसा है, तो सभी संभावित जोड़े [1,3], [3, 8] हैं। , [1, 8], तब जब k =2, दूसरी सबसे छोटी दूरी 5 (8 - 3) होती है।

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

  • n :=अंकों का आकार, x :=0
  • इनिशियलाइज़ i :=0 के लिए, जब i करें
  • x :=अधिकतम x और अंक[i]
  • x + 1 आकार की एक सरणी परिभाषित करें
  • इनिशियलाइज़ i :=0 के लिए, जब i करें
  • इनिशियलाइज़ j :=i + 1 के लिए, जब j करें
  • cnt[|nums[j] - nums[i]|] 1 तक बढ़ाएं
  • इनिशियलाइज़ i :=0 के लिए, जब i <=x, अपडेट करें (i को 1 से बढ़ाएँ), −
      करें
    • यदि cnt[i]>=k, तो −
      • वापसी मैं
    • k :=k - cnt[i]
  • रिटर्न x
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
    public:
       int smallestDistancePair(vector<int>& nums, int k) {
          int n = nums.size();
          int x = 0;
          for(int i = 0; i < n; i++)x = max(x, nums[i]);
          vector <int> cnt(x + 1);
          for(int i = 0 ; i < n; i++){
             for(int j = i + 1; j < n; j++){
                cnt[abs(nums[j] - nums[i])]++;
             }
          }
          for(int i = 0; i <= x; i++){
             if(cnt[i] >= k)return i;
             k -= cnt[i];
          }
          return x;
       }
    };
    main(){
       Solution ob;
       vector<int> v = {1,3,8};
       cout << (ob.smallestDistancePair(v, 2));
    }

    इनपुट

    {1,3,8}

    आउटपुट

    5

    1. सी++ में बीएसटी (बीएसटी में ऑर्डर सांख्यिकी) में के-वें सबसे छोटे तत्व का पता लगाएं

      मान लीजिए कि हमारे पास एक बाइनरी सर्च ट्री है और इनपुट के रूप में एक मान K है, तो हमें ट्री में K-वें सबसे छोटा तत्व खोजना होगा। तो, अगर इनपुट पसंद है k =3, तो आउटपुट 15 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - फ़ंक्शन को परिभाषित करें find_kth_smallest(), यह रूट लेगा, काउंट, k,

    1. C++ में थ्रेसहोल्ड दूरी पर पड़ोसियों की सबसे छोटी संख्या वाले शहर का पता लगाएं

      मान लीजिए कि n शहरों की संख्या 0 से n-1 तक है। यदि हमारे पास सरणी किनारे हैं जहां किनारों [i] =[fromi, toi, weighti] शहरों से i और toi के बीच एक द्विदिश और भारित किनारे का प्रतिनिधित्व करता है, और पूर्णांक दूरी सीमा दी गई है। हमें ऐसे शहरों की सबसे छोटी संख्या वाला शहर ढूंढना है जो किसी रास्ते से पह

    1. C++ में किसी सरणी में सबसे छोटे मान की आवृत्ति ज्ञात कीजिए

      यहां हम देखेंगे कि किसी सरणी में सबसे छोटे तत्व की आवृत्ति कैसे ज्ञात करें। मान लीजिए कि सरणी तत्व [5, 3, 6, 9, 3, 7, 5, 8, 3, 12, 3, 10] हैं, यहाँ सबसे छोटा तत्व 3 है, और इस तत्व की आवृत्ति 4 है। तो आउटपुट 4 है । इसे हल करने के लिए हमें सूची का सबसे छोटा तत्व मिलेगा, फिर हम पहली संख्याओं की घटनाओं