दी गई समस्या में, हमें एक ऐरे दिया गया है, और हमें d एलिमेंट्स द्वारा ऐरे को रिवर्सल एल्गोरिदम का उपयोग करके घुमाना आवश्यक है, उदाहरण के लिए −
Input : arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2 Output : arr[] = [3, 4, 5, 6, 7, 1, 2] Explanation : जैसा कि आप देख सकते हैं हमें इस ऐरे को d = 2 द्वारा घुमाना है लेकिन हमारा मुख्य कार्य इसे रिवर्सल तकनीक का उपयोग करके प्राप्त करना है।
हम ऐरे के रोटेशन के लिए रिवर्सल तकनीक का उपयोग करके कुछ गणनाएं करते हैं, और हम निष्कर्ष निकालते हैं कि −
- पहले, हम ऐरे के पहले d एलिमेंट्स को रिवर्स करते हैं।
- दूसरा, हम शेष एलिमेंट्स को रिवर्स करते हैं।
- तीसरा, हम पूरे ऐरे को रिवर्स करते हैं।
और इन तीन चरणों को लागू करके, हम अपना घुमाया हुआ ऐरे प्राप्त कर सकते हैं।
समाधान खोजने का दृष्टिकोण
इस समस्या में, सबसे पहले, हम एलिमेंट्स को रिवर्स करने के लिए एक फंक्शन बनाने जा रहे हैं; अब हम ऊपर दिए गए चरणों का पालन करते हैं
उदाहरण
#include <bits/stdc++.h> using namespace std; void reverseArray(int arr[], int start, int end) { // हमारा रिवर्सल एल्गोरिदम while (start < end) { // यदि स्टार्ट एंड के बराबर हो जाता है तो हम लूप तोड़ते हैं int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } return ; } void Rotate(int arr[], int d, int n) { // रोटेशन फंक्शन if (d == 0) // कोई रोटेशन आवश्यक नहीं return; d = d % n; // जब d n के बराबर हो जाता है तो हमारा ऐरे अपने मूल रूप में आ जाता है reverseArray(arr, 0, d - 1); // पहले d एलिमेंट्स रिवर्स करना reverseArray(arr, d, n - 1); // शेष एलिमेंट्स रिवर्स करना reverseArray(arr, 0, n - 1); // पूरा ऐरे रिवर्स करना return ; } int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; // दिया गया ऐरे int n = sizeof(arr) / sizeof(arr[0]); // हमारे ऐरे का आकार int d = 2; Rotate(arr, d, n); for(int i = 0; i < n; i++) // ऐरे प्रिंट करना cout << arr[i] << " "; cout << "\n"; return 0; }आउटपुट
3 4 5 6 7 1 2
उपरोक्त कोड की व्याख्या
उपरोक्त दृष्टिकोण में, हम पहले अपनी रिवर्सल तकनीक बनाते हैं, जो तीन पैरामीटर लेगी, यानी ऐरे, स्टार्टिंग इंडेक्स, और एंडिंग इंडेक्स, और हमारे ऐरे को स्टार्ट से एंड तक रिवर्स करेगी अब। जैसा कि हमने पहले अपना एल्गोरिदम विकसित किया था, हम इस फंक्शन का उपयोग करके उस एल्गोरिदम को लागू करने जा रहे हैं। हम पहले पहले d एलिमेंट्स को रिवर्स करते हैं। अब दूसरा, हम शेष एलिमेंट्स को रिवर्स करते हैं, और अंत में, हम पूरे ऐरे को रिवर्स करते हैं। परिणामस्वरूप, हमारा ऐरे d द्वारा घुमाया जाता है। रोटेट फंक्शन में, हम d = d % n बना रहे हैं। ऐसा इसलिए है क्योंकि यदि हम ऐरे के पहले n एलिमेंट्स को घुमाते हैं, तो हमें मिलने वाला उत्तर पहले जैसा ही होगा, इसलिए हम d का n के साथ मॉड बनाते हैं।
निष्कर्ष
इस लेख में, हम ऐरे रोटेशन के लिए रिवर्सल एल्गोरिदम लागू करने की समस्या को हल करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और पूर्ण दृष्टिकोण (सामान्य) भी सीखा जिसके द्वारा हमने इस समस्या को हल किया। हम इसी प्रोग्राम को C, Java, Python और अन्य भाषाओं में लिख सकते हैं। आशा है कि आपको यह लेख उपयोगी लगा होगा।