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

C++ में आसन्न तत्वों के बीच अंतर 0 या 1 होने पर अधिकतम लंबाई का उपसरणी


हमें किसी भी आकार का एक सरणी दिया गया है और कार्य है उस सरणी में उपसरणी ढूंढना जहां आसन्न तत्वों के बीच का अंतर 0 या 1 हो।

उदाहरण

इनपुट: int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6 }

आउटपुट: आसन्न तत्वों के बीच अंतर 0 या 1 होने पर अधिकतम लंबाई की उपसरणी: 2

व्याख्या: अंतर 0 या 1 वाले आसन्न तत्व {2, 1}, {5, 6}, {3, 4} और {7, 6} हैं। इसलिए उपसरणी की अधिकतम लंबाई 2 है।

इनपुट: int arr[] = { 2, 1, 7, 6, 5 }

आउटपुट: आसन्न तत्वों के बीच अंतर 0 या 1 होने पर अधिकतम लंबाई की उपसरणी: 3

व्याख्या: अंतर 0 या 1 वाले आसन्न तत्व {2, 1} और {7, 6, 5} हैं। इसलिए उपसरणी की अधिकतम लंबाई 3 है।

प्रयुक्त दृष्टिकोण

  • पूर्णांक प्रकार की एक सरणी इनपुट करें जिसमें धनात्मक और ऋणात्मक दोनों तत्व हो सकते हैं।
  • सरणी का आकार गणना करें और सरणी व आकार को आगे की कार्यक्षमता के लिए फ़ंक्शन में पास करें।
  • एक अस्थायी चर i लें और इसे 0 पर सेट करें और maximum चर को 0 पर सेट करें।
  • i से सरणी के आकार तक while लूप शुरू करें।
  • लूप के अंदर, j को i पर सेट करें।
  • एक और लूप शुरू करें जो आसन्न तत्वों के साथ उपसरणी की गणना करेगा कि अंतर 0 है या नहीं।
  • लूप के अंदर, i का मान बढ़ाएं।
  • temp को i-j+1 पर सेट करें।
  • जांचें कि क्या maximum, temp से कम है तो maximum को temp पर सेट करें।
  • जांचें कि क्या j, i के बराबर है तो i का मान बढ़ाएं।
  • maximum लौटाएं।
  • परिणाम प्रिंट करें।

उदाहरण कोड

#include<bits/stdc++.h> using namespace std; // आसन्न तत्वों के बीच 0 या 1 अंतर वाली अधिकतम लंबाई की उपसरणी की गणना करने का फ़ंक्शन int maximum_diff(int arr[], int size){ int i = 0; int maximum = 0; while (i < size){ int j = i; while (i+1 < size && (abs(arr[i] - arr[i + 1]) == 1 || abs(arr[i] - arr[i + 1]) == 0)){ i++; } int temp = i - j + 1; if (maximum < temp){ maximum = temp; } if(j == i){ i++; } } return maximum; } int main(){ int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"आसन्न तत्वों के बीच अंतर 0 या 1 होने पर अधिकतम लंबाई की उपसरणी: "<< maximum_diff(arr, size); }

आउटपुट

आसन्न तत्वों के बीच अंतर 0 या 1 होने पर अधिकतम लंबाई की उपसरणी: 2

  1. - C++ में किन्हीं दो एलिमेंट्स के बीच न्यूनतम अंतर ढूंढें

    मान लीजिए हमारे पास n एलिमेंट्स का एक ऐरे है जिसे A कहा जाता है। हमें उस ऐरे में किन्हीं दो एलिमेंट्स के बीच न्यूनतम अंतर ढूंढना है। मान लीजिए A = [30, 5, 20, 9], तो परिणाम 4 होगा। यह एलिमेंट्स 5 और 9 की न्यूनतम दूरी है। इस समस्या को हल करने के लिए, हमें इन चरणों का पालन करना होगा - ऐरे को नॉन-डि

  1. - मैट्रिक्स के किसी भी कॉलम में अधिकतम अंतर वाली जोड़ी खोजें C++ में

    मान लीजिए हमारे पास NxN क्रम का एक मैट्रिक्स है। हमें तत्वों की एक जोड़ी खोजनी है जो मैट्रिक्स के किसी भी कॉलम से अधिकतम अंतर बनाती है। तो यदि मैट्रिक्स इस तरह है - 123 535 967 तो आउटपुट 8 होगा। क्योंकि जोड़ी (1, 9) कॉलम 0 से है। विचार सरल है, हमें बस प्रत्येक कॉलम के अधिकतम और न्यूनतम तत्वों के

  1. - C++ में LCM उत्पाद के बराबर होने वाले अधिकतम लंबाई के सबएरे

    मान लीजिए हमारे पास एक सरणी A है। हमें सबएरे की अधिकतम लंबाई ढूंढनी है, जिसका LCM उस सबएरे के एलिमेंट्स के उत्पाद के समान है। यदि ऐसा सबएरे नहीं मिलता, तो -1 वापस करें। मान लीजिए सरणी {6, 10, 21} है, तो लंबाई 2 है, क्योंकि सबएरे {10, 21} है, जिसका LCM 210 है, और उत्पाद भी 210 है। दृष्टिकोण सीधा है।