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

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


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

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

  • स्टैक सेंट को परिभाषित करें, एक खाली स्ट्रिंग रिट बनाएं

  • n :=संख्या का आकार

  • मेरे लिए 0 से n - 1 की सीमा में

    • जबकि k शून्य नहीं है और स्टैक खाली नहीं है और स्टैक के शीर्ष पर है> num[i]

      • स्टैक से हटाएं और k को 1 से घटाएं

    • num[i] सेंट में डालें

  • जबकि k 0 नहीं है, स्टैक से तत्व हटाएं

  • जबकि ढेर खाली नहीं है

    • रिट:=रिट + स्टैक के ऊपर, स्टैक से तत्व हटाएं

  • अब रिट स्ट्रिंग को उल्टा करें

  • उत्तर:=एक खाली स्ट्रिंग, और मैं:=0

  • जबकि i <रिट और रिट का आकार [i] '0' नहीं है

    • 1 से बढ़ाएँ

  • मैं के लिए <रिट का आकार

    • उत्तर:=उत्तर + रिट[i]

  • रिट:=उत्तर

  • यदि रिट का आकार 0 है, तो "0" लौटाएं, अन्यथा, रिट करें

उदाहरण (C++)

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

class Solution {
public:
   string removeKdigits(string num, int k) {
      stack st;
      string ret = "";
      int n = num.size();
      for(int i = 0; i < n; i++){
         while(k && !st.empty() && st.top() > num[i]){
            st.pop();
            k--;
         }
         st.push(num[i]);
      }
      while(k--)st.pop();
      while(!st.empty()){
         ret += st.top();
         st.pop();
      }
      reverse(ret.begin(), ret.end());
      string ans = "";
      int i = 0;
      while(i <ret.size() && ret[i] == '0')i++;
      for(; i < ret.size(); i++)ans += ret[i];
      ret = ans;
      return ret.size() == 0? "0" : ret;
   }
};

इनपुट

"1432219"
3

आउटपुट

"1219"

  1. सी++ में जंप गेम वी

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है जिसे arr और एक पूर्णांक d कहा जाता है। एक चरण में हम इंडेक्स i से − . पर जा सकते हैं i + x जहां:i + x

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

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

  1. C++ . में चार भाजक

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी संख्या है, हमें उस सरणी में पूर्णांकों के भाजक का योग ज्ञात करना होगा जिसमें ठीक चार भाजक हों। तो अगर सरणी में ऐसा कोई पूर्णांक नहीं है, तो 0 लौटाएं। उदाहरण के लिए, यदि इनपुट [21, 4, 7] है, तो आउटपुट 32 होगा, क्योंकि 21 में चार भाजक हैं 1, 3, 7, 21, 4 में तीन