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

C++ में K लगातार संख्याओं के सेट में ऐरे को विभाजित करें

मान लीजिए कि हमारे पास पूर्णांक संख्याओं की एक सरणी है और एक सकारात्मक पूर्णांक k है, तो हमें यह पता लगाना होगा कि क्या इस सरणी को k लगातार संख्याओं के सेट में विभाजित करना संभव है। इसलिए यदि संभव हो तो हमें ट्रू वापस करना होगा अन्यथा गलत लौटाएं। तो अगर इनपुट [1,2,3,3,4,4,5,6] और k =4 जैसा है, तो आउटपुट सही होगा। ऐसा इसलिए है, क्योंकि हम सरणी को इस तरह विभाजित कर सकते हैं कि [1,2,3,4] और [3,4,5,6]

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

  • एक नक्शा m बनाएं, n सेट करें:=अंकों की सरणी का आकार
  • प्रत्येक तत्व के लिए ई अंकों में
    • m[e] को 1 से बढ़ाएं
  • सीएनटी:=0
  • संख्या सरणी को क्रमबद्ध करें
  • मैं के लिए 0 से n की सीमा में
    • x :=nums[i]
    • यदि m[x – 1] =0 और m[x]> 0
      • l :=k
      • जबकि कश्मीर> 0
        • अगर m[x]> 0, तो m[k] के मान को 1 से घटाएं, नहीं तो झूठी वापसी करें
        • x और cnt को 1 से बढ़ाएं और k को 1 से घटाएं
      • k :=l
  • सीएनटी =एन होने पर सही लौटें, अन्यथा गलत

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool isPossibleDivide(vector<int>& nums, int k) {
      map <int, int> m;
      int n = nums.size();
      for(int i = 0; i < n; i++){
         m[nums[i]]++;
      }
      int cnt = 0;
      sort(nums.begin(), nums.end());
      for(int i = 0; i < n; i++){
         int x = nums[i];
         if(m[x - 1] == 0 && m[x] > 0){
            int l = k;
            while(k>0){
               if(m[x] > 0){
                  m[x]--;
            } else return false;
               x++;
               k--;
               cnt++;
            }
            k = l;
         }
      }
     return cnt == n;
   }
};
main(){
   vector<int> v = {1,2,3,3,4,4,5,6};
   Solution ob;
   cout << (ob.isPossibleDivide(v, 4));
}

इनपुट

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

आउटपुट

1

  1. अधिकतम संख्या सी ++ में एक सरणी में सन्निहित प्राइम नंबरों का

    हमें अभाज्य संख्याओं की एक सरणी दी गई है, जिन्हें यादृच्छिक क्रम में व्यवस्थित किया गया है। सरणी का आकार N है। लक्ष्य सरणी में सन्निहित अभाज्य संख्याओं का सबसे लंबा अनुक्रम खोजना है। अभाज्य संख्या वह होती है जिसके केवल दो गुणनखंड होते हैं, 1 और स्वयं संख्या। 1,2,3,5,7,11,13…. अभाज्य संख्याएँ हैं जबक

  1. C++ . में बाइनरी सर्कुलर ऐरे में अधिकतम क्रमागत (या शून्य)

    हमें एक गोलाकार सरणी के साथ दिया गया है। वृत्ताकार सरणी वह सरणी है जिसके लिए हम इस मामले पर विचार करते हैं कि पहला तत्व अंतिम तत्व के बगल में आता है। इसका उपयोग कतारों को लागू करने के लिए किया जाता है। इसलिए हमें अधिकतम संख्या गिननी होगी। उस सरणी में लगातार 1 या 0 का। आइए उदाहरणों से समझते हैं। इन

  1. C++ में किसी सरणी में सभी अभाज्य संख्याओं का गुणनफल

    कुछ तत्वों के साथ एक पूर्णांक सरणी arr[] को देखते हुए, कार्य उस संख्याओं की सभी अभाज्य संख्याओं का गुणनफल खोजना है। अभाज्य संख्याएँ वे संख्याएँ होती हैं जिन्हें या तो 1 से या स्वयं संख्या से विभाजित किया जाता है, या एक अभाज्य संख्या एक ऐसी संख्या होती है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख