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

सी ++ में बाद में विगल करें

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

तो हमारे पास पूर्णांकों का एक क्रम है, हमें सबसे लंबे बाद के अनुक्रम की लंबाई ज्ञात करनी होगी जो कि एक विग्गल अनुक्रम है। मूल अनुक्रम से कुछ तत्वों (अंततः, शून्य भी) को हटाकर, शेष तत्वों को उनके मूल क्रम में छोड़कर एक अनुवर्ती प्राप्त किया जाता है। तो अगर इनपुट [1,7,4,9,2,5] जैसा है, तो आउटपुट 6 होगा।

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

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

  • अगर n 0 है, तो वापस 0

  • सेट अप:=1 और नीचे:=1

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

    • अगर अंक [i]> अंक [i – 1], तो ऊपर:=नीचे + 1

    • अन्यथा जब nums[i]

  • अधिकतम ऊपर और नीचे लौटें

उदाहरण (C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int wiggleMaxLength(vector<int>& nums) {
      int n = nums.size();
      if(!n) return 0;
      int up = 1;
      int down = 1;
      for(int i = 1; i < n; i++){
         if(nums[i] > nums[i - 1]){
            up = down + 1;
         }
         else if(nums[i] < nums[i - 1]){
            down = up + 1;
         }
      }
      return max(up, down);
   }
};
main(){
   Solution ob;
   vector<int> v = {1,7,4,9,2,5};
   cout << (ob.wiggleMaxLength(v));
}

इनपुट

[1,7,4,9,2,5]

आउटपुट

6

  1. सी++ में विग्गल सॉर्ट II

    मान लीजिए कि हमारे पास एक अवर्गीकृत सरणी संख्या है, हमें इसे इस तरह पुनर्व्यवस्थित करना होगा कि nums[0] nums[2]

  1. C++ में क्रमपरिवर्तन अनुक्रम

    मान लीजिए कि सेट [1,2,3,...,n] जैसा है, जिसमें कुल n है! अद्वितीय क्रमपरिवर्तन। क्रम में सभी क्रमपरिवर्तनों को सूचीबद्ध और लेबल करके, हमें n =3 के लिए ये क्रम मिलते हैं:[123, 132, 213, 231, 312, 321] तो यदि n और k दिए गए हैं, फिर kth क्रमपरिवर्तन अनुक्रम लौटाएं। n 1 से 9 (समावेशी) के बीच होगा और k 1

  1. सी ++ में विभाज्य अनुक्रम

    विभाज्य अनुक्रम संख्याओं का एक विशेष क्रम है। अनुक्रम संख्या से ही शुरू होता है और अनुक्रम की अगली संख्या पिछले पदों के उचित भाजक का योग है। आइए अवधारणा को बेहतर ढंग से सीखने के लिए अनुक्रम का एक उदाहरण लेते हैं - Input : 8 Output : 8 7 1 0 Explanation :    Proper divisors of 8 are 4, 2,