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

C++ में फ्लिप टू जीरो


मान लीजिए हमारे पास nums नामक एक पूर्णांक सरणी है जिसमें 0 और 1 हैं। मान लीजिए हमारे पास एक ऑपरेशन है जहां हम nums में एक इंडेक्स i चुनते हैं और इंडेक्स i पर तत्व के साथ-साथ i के दाईं ओर के सभी नंबरों को फ्लिप करते हैं। हमें nums को सभी 0 बनाने के लिए आवश्यक न्यूनतम ऑपरेशनों की संख्या ज्ञात करनी है।

उदाहरण के लिए, यदि इनपुट [1, 0, 1] है, तो आउटपुट 3 होगा। इंडेक्स 0 पर ऑपरेशन, यह [0, 1, 0] में बदल देगा, फिर इंडेक्स 1 पर [0, 0, 1], फिर इंडेक्स 2 पर [0, 0, 0]।

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

इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • n := nums का आकार
  • आकार n की एक सरणी op परिभाषित करें
  • ret := 0
  • i := 0 से nums के आकार - 1 तक लूप चलाएं:
    • यदि i - 1 >= 0, तो op[i] := op[i] + op[i - 1]
    • यदि (nums[i] + op[i]) & 1 शून्येतर है:
      • op[i]++
      • ret++
  • ret लौटाएं

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

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

class Solution {
public:
    int solve(vector<int>& nums) {
        int n = nums.size();
        vector<int> op(n);
        int ret = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (i - 1 >= 0) {
                op[i] += op[i - 1];
            }
            if ((nums[i] + op[i]) & 1) {
                op[i]++;
                ret++;
            }
        }
        return ret;
    }
};

int main() {
    Solution ob;
    vector<int> v = {1, 0, 1};
    cout << (ob.solve(v));
    return 0;
}

इनपुट

{1, 0, 1}

आउटपुट

3
  1. C++ में फ्लिप-समतुल्य बाइनरी ट्री C++ में फ्लिप-समतुल्य बाइनरी ट्री

    मान लीजिए हमारे पास दो बाइनरी ट्री हैं। एक फ्लिप ऑपरेशन में किसी नोड के बाएँ और दाएँ सबट्री को स्वैप करना शामिल है। ट्री X, ट्री Y के फ्लिप-समतुल्य (flip equivalent) है यदि हम X में कुछ फ्लिप ऑपरेशन्स करके Y प्राप्त कर सकते हैं। हमें निर्धारित करना है कि दो दिए गए बाइनरी ट्री (रूट root1 और root2) फ

  1. - C++ में isnormal() फंक्शन

    इस खंड में हम C++ में isnormal() फंक्शन देखेंगे। यह फंक्शन cmath लाइब्रेरी में मौजूद है। यह फंक्शन जांचने के लिए उपयोग किया जाता है कि कोई संख्या नॉर्मल है या नहीं। जिन संख्याओं को नॉन-नॉर्मल माना जाता है वे हैं जीरो, इन्फिनिटी या NaN। यह फंक्शन फ्लोट, डबल या लॉन्ग डबल मानों को आर्गुमेंट के रूप में

  1. - C++ में स्ट्रिंग से ट्रेलिंग जीरो हटाना

    इस प्रोग्राम में हम देखेंगे कि C++ में स्ट्रिंग से ट्रेलिंग जीरो कैसे हटाएं। कभी-कभी कुछ स्ट्रिंग में ट्रेलिंग जीरो हो सकते हैं जैसे 00023054। इस प्रोग्राम को 실행 करने के बाद, यह केवल 23054 लौटाएगा। प्रारंभिक जीरो हटा दिए जाते हैं। इनपुट: ट्रेलिंग जीरो वाली स्ट्रिंग 000023500124 आउटपुट: 23500124 एल