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

C++ में जांचें कि क्या एक उपसरणी पर्वत के रूप में है या नहीं


इस समस्या में, हमें पूर्णांकों की एक सरणी arr[] और एक रेंज दी गई है। हमारा कार्य जांचना है कि क्या एक उपसरणी पर्वत के रूप में है या नहीं।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट : arr[] = {1, 4, 2, 5, 6, 7, 3, 0}, रेंज = [2, 7] आउटपुट : हाँ

व्याख्या −

रेंज की उपसरणी = {2, 5, 6, 7, 3, 0} मान पहले बढ़ते हैं और फिर घटते हैं।

समाधान दृष्टिकोण

समस्या का एक सरल समाधान अतिरिक्त सरणियों का उपयोग करना है। हम सरणी के प्रत्येक तत्व के लिए उस अंतिम तत्व का इंडेक्स ढूंढेंगे जो बढ़ रहा है और घटते मानों के लिए भी ऐसा ही करेंगे। फिर दिए गए रेंज में पर्वत की जांच करेंगे।

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम

#include <iostream> using namespace std; int processArray(int arr[], int N, int left[], int right[]){ left[0] = 0; int increasingValR = 0; for (int i = 1; i < N; i++){ if (arr[i] > arr[i - 1]) increasingValR = i; left[i] = increasingValR; } right[N - 1] = N - 1; int decreasingValL = N - 1; for (int i = N - 2; i >= 0; i--){ if (arr[i] > arr[i + 1]) decreasingValL = i; right[i] = decreasingValL; } } bool isMountainSubArray(int arr[], int left[], int right[], int L, int R){ return (right[L] >= left[R]); } int main(){ int arr[] = {2, 3, 2, 4, 4, 6, 3, 2}; int N = sizeof(arr) / sizeof(int); int left[N], right[N]; processArray(arr, N, left, right); int L = 0; int R = 2; if (isMountainSubArray(arr, left, right, L, R)) cout<<"उपसरणी पर्वत रूप में है"; else cout<<"उपसरणी पर्वत रूप में नहीं है"; return 0; }

आउटपुट

उपसरणी पर्वत रूप में है 

  1. - C++ में Subarray Sum Equals K

    मान लीजिए हमारे पास पूर्णांकों की एक सरणी और एक पूर्णांक k है, हमें उन सतत उपसरणियों (continuous subarrays) की कुल संख्या ढूंढनी है जिनका योग k के समान है। इसलिए यदि nums सरणी [1, 1, 1] है और k 2 है, तो आउटपुट 2 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -sums नामक एक मैप परिभाषित करें, tem

  1. - सख्ती से बढ़ते सब-अर्रे का अधिकतम योग खोजें C++ में

    मान लीजिए हमारे पास n पूर्णांकों का एक ऐरे है। सख्ती से बढ़ते सब-अर्रे का अधिकतम योग खोजें। तो यदि ऐरे [1, 2, 3, 2, 5, 1, 7] जैसा है, तो योग 8 होगा। इस ऐरे में तीन सख्ती से बढ़ते सब-अर्रे हैं ये हैं {1, 2, 3}, {2, 5} और {1, 7}। अधिकतम योग वाला सब-अर्रे {1, 7} है। इस समस्या को हल करने के लिए, हमें अध

  1. - C++ प्रोग्राम: दो नोड्स के बीच पथ की जांच (BFS)

    यह C++ प्रोग्राम Breadth-First Search (BFS) एल्गोरिदम का उपयोग करके निर्धारित करता है कि एक डायरेक्टेड ग्राफ में दो दिए गए नोड्स के बीच कोई पथ मौजूद है या नहीं। एल्गोरिदम शुरुआत 1. फंक्शन isReach() रिकर्सिव फंक्शन है जो जांचता है कि d, s से पहुंच योग्य है या नहीं: A) सभी वर्टेक्स को अनविजिट