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

C++ में शून्य पर पलटें


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

तो, अगर इनपुट [1,0,1] जैसा है, तो आउटपुट 3 होगा, इंडेक्स 0 पर ऑपरेशन, यह [0,1,0] कन्वर्ट होगा, फिर इंडेक्स 1 पर [ 0,0,1], फिर इंडेक्स 2, [0,0,0]।

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

  • n :=अंकों का आकार

  • आकार n के सरणी सेशन को परिभाषित करें

  • रिट:=0

  • इनिशियलाइज़ i :=0 के लिए, जब i <अंकों का आकार, अपडेट करें (i से 1 बढ़ाएँ), करें -

    • अगर मैं - 1>=0, तो -

      • op[i] :=op[i] + op[i - 1]

    • अगर (nums[i] + op[i]) और 1 शून्य नहीं है, तो -

      • (op[i] को 1 से बढ़ाएं)

      • (रिटर्न 1 से बढ़ाएं)

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

उदाहरण

#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;
   }
};
main() {
   Solution ob;
   vector<int> v = {1,0,1};
   cout << (ob.solve(v));
}

इनपुट

{1,0,1}

आउटपुट

3

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

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें बाइनरी ट्री को पलटना है। फ्लिप इंगित करता है:कोई भी नोड चुनें, और बाएँ और दाएँ चाइल्ड सबट्री को स्वैप करें। अब एक बाइनरी ट्री एक्स एक बाइनरी ट्री वाई के बराबर फ्लिप है यदि और केवल अगर हम कुछ फ्लिप ऑपरेशन के बाद एक्स से वाई बना सकते हैं। हमें एक विधि लिख

  1. सी ++ में असामान्य ()

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

  1. C++ में स्ट्रिंग से अनुगामी शून्य निकालें

    इस प्रोग्राम में हम देखेंगे कि C++ में एक स्ट्रिंग से अनुगामी शून्य को कैसे हटाया जाए। कभी-कभी कुछ स्ट्रिंग में 00023054 जैसे अनुगामी शून्य हो सकते हैं। इस प्रोग्राम को निष्पादित करने के बाद, यह केवल 23054 लौटाएगा। प्रारंभिक शून्य हटा दिए जाते हैं। Input: A string with trailing zeros “00002350