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

C++ में दिए गए अंतर का सबसे लंबा अंकगणितीय क्रम


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

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

  • नक्शा परिभाषित करें मी
  • n:=सरणी का आकार गिरफ्तारी, सेट उत्तर:=0
  • मैं के लिए 0 से n - 1 की सीमा में
    • x :=arr[i]
    • m[x] :=1 + m[x - d]
    • उत्तर :=अधिकतम और m[x]
  • वापसी उत्तर

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int longestSubsequence(vector<int>& arr, int d) {
      int n = arr.size();
      map <int,int> m;
      int ans = 0;
      for(int i =0;i<n;i++){
         int x = arr[i];
         m[x] = 1 + (m[x-d]);
         ans = max(ans,m[x]);
      }
      return ans;
   }
};
main(){
   vector<int> v1 = {1,5,7,8,5,3,4,2,1};
   Solution ob;
   cout <<ob.longestSubsequence(v1, -2);
}

इनपुट

[1,5,7,8,5,3,4,2,1]
-2

आउटपुट

4

  1. C++ में अंकगणित संख्या

    अंकगणितीय संख्या एक ऐसी संख्या है जिसमें सभी धनात्मक भाजक का औसत एक पूर्णांक होता है अर्थात संख्या n के लिए यदि भाजक की संख्या भाजक के योग को विभाजित कर सकती है तो n एक अंकगणितीय संख्या है। आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, Input : n = 6 Output : YES Explanation : Divisor

  1. सबसे लंबे समय तक सामान्य बाद के लिए सी ++ कार्यक्रम

    एक अनुक्रम तत्वों के सेट के समान क्रम वाला अनुक्रम है। अनुक्रम स्टुव के लिए, अनुवर्ती स्टु, तुव, एसयूवी, .... आदि हैं। लंबाई n की एक स्ट्रिंग के लिए, स्ट्रिंग से अनुवर्ती बनाने के 2n तरीके हो सकते हैं। उदाहरण एबीसीडीजीएच और एईडीएफएचआर स्ट्रिंग्स के लिए सबसे लंबा सामान्य अनुक्रम लंबाई 3 का है। #inc

  1. सी ++ प्रोग्राम किसी दिए गए अनुक्रम के सबसे लंबे समय तक बढ़ते क्रम को खोजने के लिए

    सबसे लंबे समय तक बढ़ने वाला क्रम वह क्रम है जहां एक आइटम अपने पिछले आइटम से बड़ा होता है। यहां हम पूर्णांकों के एक सेट से सबसे लंबी बढ़ती अनुवर्ती लंबाई खोजने का प्रयास करेंगे। Input: A set of integers. {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15} Output: The length of longest increasing