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

C++ में डबल्ड पेयर्स का ऐरे (Array of Doubled Pairs)


मान लीजिए हमारे पास सम लंबाई का एक पूर्णांक ऐरे A है, अब हमें true कहना है यदि और केवल यदि इसे इस तरह से पुनः क्रमबद्ध करना संभव है कि A[2 * i + 1] = 2 * A[2 * i] प्रत्येक 0 ≤ i < len(A) / 2 के लिए।

उदाहरण के लिए, यदि इनपुट [3,1,3,6] है तो परिणाम false होगा, जबकि [4,-2,2,-4] true लौटाएगा।

समाधान दृष्टिकोण

  1. एक मैप m में प्रत्येक तत्व की आवृत्ति स्टोर करें

  2. cnt := A का आकार

  3. मैप के प्रत्येक कुंजी-मान जोड़े के लिए:

  4. यदि कुंजी ≠ 0 और 2*कुंजी मौजूद है, तो न्यूनतम आवृत्ति से जोड़े बनाएं

  5. यदि कुंजी = 0, तो सभी जोड़े आंतरिक रूप से बनाएं

  6. यदि cnt शून्य हो जाता है तो true, अन्यथा false

C++ कार्यान्वयन

#include <bits/stdc++.h> 
using namespace std; 

class Solution { 
public: 
    bool canReorderDoubled(vector<int>& A) { 
        map<int, int> m; 
        int n = A.size(); 
        for(int i = 0; i < n; i++){ 
            m[A[i]]++; 
        } 
        int cnt = A.size(); 
        for(auto it = m.begin(); it != m.end(); it++){ 
            if(m[it->first] > 0){ 
                if(it->first != 0 && m[it->first * 2] > 0){ 
                    int x = min(m[it->first], m[it->first * 2]); 
                    cnt -= (x * 2); 
                    m[it->first * 2] -= x; 
                    m[it->first] -= x; 
                }else if(it->first == 0){ 
                    cnt -= m[it->first]; 
                    m[it->first] = 0; 
                } 
            } 
        } 
        return !cnt; 
    } 
}; 

int main(){ 
    vector<int> v1 = {3,1,3,6}; 
    Solution ob; 
    cout << (ob.canReorderDoubled(v1)) << endl; 
    v1 = {4,-2,2,-4}; 
    cout << (ob.canReorderDoubled(v1)); 
    return 0; 
}

इनपुट

[3,1,3,6] [4,-2,2,-4]

आउटपुट

0 1
  1. - C++ में सरणी में उन सभी जोड़े (a, b) को खोजें जैसे कि a % b = k

    मान लीजिए हमारे पास एक सरणी A है, उस सरणी से हमें सभी जोड़े (a, b) प्राप्त करने हैं जैसे कि a%b = k। मान लीजिए सरणी A = [2, 3, 4, 5, 7], और k = 3, तो जोड़े हैं (7, 4), (3, 4), (3, 5), (3, 7)। इसे हल करने के लिए, हम सूची को पार करेंगे और जांचेंगे कि दी गई शर्त पूरी हो रही है या नहीं। उदाहरण #include

  1. - C++ में स्ट्रिंग्स की सरणी

    इस खंड में हम देखेंगे कि C++ में स्ट्रिंग्स की सरणी को कैसे परिभाषित किया जाए। जैसा कि हम जानते हैं कि C में कोई स्ट्रिंग्स नहीं थीं। हमें कैरेक्टर सरणी का उपयोग करके स्ट्रिंग्स बनानी पड़ती थीं। इसलिए कुछ स्ट्रिंग्स की सरणी बनाने के लिए, हमें कैरेक्टर्स की 2-आयामी सरणी बनानी पड़ती थी। प्रत्येक पंक्

  1. - C++ में सॉर्टिंग

    इस सेक्शन में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिदम कैसे निष्पादित करें। एक सॉर्टेड ऐरे एक ऐरे है जिसमें प्रत्येक एलिमेंट किसी क्रम में सॉर्टेड होते हैं जैसे न्यूमेरिकल, अल्फाबेटिकल आदि। एक न्यूमेरिकल ऐरे को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज स