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

सी++ में विभाजित सूची


मान लीजिए कि हमारे पास nums नामक पूर्णांकों की एक सूची है, हमें यह पता लगाना होगा कि क्या हम सूची को दो उप-सूचियों (गैर-रिक्त) में विभाजित कर सकते हैं जैसे कि बाएं भाग में प्रत्येक संख्या सख्ती से कम है दाएँ भाग में प्रत्येक संख्या से अधिक।

इसलिए, यदि इनपुट [6,4,3,8,10] जैसा है, तो आउटपुट सही होगा, जैसा कि बाएँ =[6,4,3] और दाएँ =[8,10]

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

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

  • आकार n के दाईं ओर एक सरणी परिभाषित करें

  • आकार n के बाईं ओर एक सरणी परिभाषित करें

  • बाएं [0] :=अंक[0]

  • दाएँ का अंतिम तत्व:=अंकों का अंतिम तत्व

  • इनिशियलाइज़ करने के लिए मैं :=1, जब i

    • बायां [i] :=अधिकतम बायां[i - 1] और अंक[i]

  • इनिशियलाइज़ करने के लिए i :=n - 2, जब i>=0, अपडेट करें (i से 1 घटाएं), −

    करें
    • दाएं [i] :=कम से कम दाएं[i + 1] और अंक[i]

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • अगर बाएं [i] <दाएं [i + 1], तो -

      • सही लौटें

  • झूठी वापसी

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool solve(vector<int> &nums) {
      int n = nums.size();
      vector<int> right(n);
      vector<int> left(n);
      left[0] = nums[0];
      right.back() = nums.back();
      for (int i = 1; i < n; i++) {
         left[i] = max(left[i - 1], nums[i]);
      }
      for (int i = n - 2; i >= 0; i--) {
         right[i] = min(right[i + 1], nums[i]);
      }
      for (int i = 0; i < n - 1; i++) {
         if (left[i] < right[i + 1])
         return true;
      }
      return false;
   }
};
main() {
   Solution ob;
   vector<int> v = {6,4,3,8,10};
   cout << (ob.solve(v));
}

इनपुट

{6,4,3,8,10}

आउटपुट

1

  1. सी ++ में एक लिंक्ड सूची को समतल करना सी ++ में एक लिंक्ड सूची को समतल करना

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

  1. - सी ++ में स्ट्रैंड सॉर्ट करें

    इस खंड में हम देखेंगे कि हम सी ++ के मानक पुस्तकालय का उपयोग करके कुछ सरणी या लिंक्ड सूची को कैसे सॉर्ट कर सकते हैं। सी ++ में कई अलग-अलग पुस्तकालय हैं जिनका उपयोग विभिन्न उद्देश्यों के लिए किया जा सकता है। छँटाई उनमें से एक है। C++ फ़ंक्शन std::list::sort() सूची के तत्वों को आरोही क्रम में क्रमबद्

  1. - कस्टम सूची पायथन में विभाजित

    डेटा एनालिटिक्स जटिल परिदृश्यों को फेंकता है जहां डेटा को इधर-उधर ले जाने के लिए उलझने की आवश्यकता होती है। इस सन्दर्भ में देखते हैं कि कैसे हम एक बड़ी सूची लेकर आवश्यकता के अनुसार उसे अनेक उप-सूचियों में विभाजित कर सकते हैं। इस लेख में हम इसे प्राप्त करने के तरीकों का पता लगाएंगे। ज़िप के साथ और लू