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

C++ में मोनोटोन बढ़ते अंक

मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक N है, तो हमें मोनोटोन बढ़ते अंकों के साथ N से कम या उसके बराबर सबसे बड़ी संख्या ज्ञात करनी होगी। हम जानते हैं कि एक पूर्णांक में मोनोटोन बढ़ते अंक होते हैं यदि और केवल यदि आसन्न अंकों की प्रत्येक जोड़ी 'x और y' x <=y को संतुष्ट करती है।) तो यदि इनपुट 332 की तरह है, तो परिणाम 299 होगा।

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

  • s :=N स्ट्रिंग के रूप में, i :=1, n :=s का आकार
  • जबकि मैं =s[i – 1]
    • मैं 1 से बढ़ाएँ
  • अगर मैं
  • जबकि मैं> 0 और s[i – 1]> s[i], तब
    • i 1 से घटाएं
    • s[i] को 1 से घटाएं
  • जे के लिए i + 1 से n तक की श्रेणी में
    • s[j] :='9'
  • एस को नंबर के रूप में लौटाएं
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
    public:
       int monotoneIncreasingDigits(int N) {
          string s = to_string(N);
          int i = 1;
          int n = s.size();
          while(i < n && s[i] >= s[i - 1]) i++;
          if( i < n)
          while(i > 0 && s[i - 1] > s[i]){
             i--;
             s[i]--;
          }
          for(int j = i + 1; j < n; j++)s[j] = '9';
          return stoi(s);
       }
    };
    main(){
       Solution ob;
       cout << (ob.monotoneIncreasingDigits(332));
    }

    इनपुट

    332

    आउटपुट

    299

    1. C++ में बढ़ते हुए मोनोटोन के लिए स्ट्रिंग फ्लिप करें

      मान लीजिए 0 और 1 की एक स्ट्रिंग दी गई है। वह स्ट्रिंग मोनोटोनिक बढ़ रही होगी यदि इसमें कुछ संख्या में 0 (संभवतः 0) शामिल हैं, इसके बाद कुछ 1 (संभवतः 0.) भी हैं। हमारे पास 0 और 1 की एक स्ट्रिंग S है, और हम किसी भी 0 को 1 या 1 को 0 में फ़्लिप कर सकते हैं। S मोनोटोन को बढ़ाने के लिए फ़्लिप की न्यूनतम स

    1. C++ प्रोग्राम में K अंक निकालें

      मान लीजिए कि हमारे पास संख्या का एक क्रम है जिसे अंकगणित कहा जाता है यदि इसमें कम से कम तीन तत्व हों और यदि किन्हीं दो क्रमागत तत्वों के बीच का अंतर समान हो। तो उदाहरण के लिए, ये अंकगणितीय अनुक्रम हैं:[1, 3, 5, 7, 9], [7, 7, 7, 7], [3, -1, -5, -9], लेकिन निम्नलिखित अनुक्रम नहीं है अंकगणित। [1, 1, 2,

    1. C++ में K अंक हटाएं

      मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक संख्या है जिसे एक स्ट्रिंग के रूप में दर्शाया गया है, हमें संख्या से k अंक निकालना होगा ताकि नई संख्या सबसे छोटी संभव हो। तो अगर इनपुट “1432219” और k =3 जैसा है, तो परिणाम “1219” होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - स्टैक सेंट को पर