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

2D सरणी में पीक एलिमेंट


एक आइटम को पीक एलिमेंट कहा जाता है जब वह अपने चारों पड़ोसियों से बड़ा या बराबर होता है। पड़ोसी तत्व शीर्ष, नीचे, बाएँ और दाएँ तत्व हैं। इस समस्या के लिए, हम कुछ सीमाएँ मानते हैं। विकर्ण तत्वों को पड़ोसी तत्वों के रूप में नहीं जाँचा जाता है। एक मैट्रिक्स में एक से अधिक पीक एलिमेंट हो सकते हैं, और पीक एलिमेंट आवश्यक रूप से मैट्रिक्स का सबसे बड़ा तत्व नहीं होता है।

इनपुट और आउटपुट

इनपुट: विभिन्न संख्याओं का एक मैट्रिक्स। 10 8 10 10 14 13 12 11 15 9 11 11 15 9 11 21 16 17 19 20 आउटपुट: मैट्रिक्स का पीक एलिमेंट। यहाँ पीक एलिमेंट है: 21

एल्गोरिदम

findMaxMid(rows, mid, max)

इनपुट: मैट्रिक्स की पंक्तियों की संख्या, मध्य पंक्ति, आउटपुट तर्क के रूप में एक अधिकतम तत्व।

आउटपुट: अधिकतम आइटम और अधिकतम तत्व के सूचकांक को अपडेट करें।

शुरू     maxIndex := 0     मैट्रिक्स में सभी पंक्तियों r के लिए, करें       यदि max < matrix[i, mid], तो           max = matrix[i, mid],           maxIndex := r     किया     maxIndex वापस करें अंत

findPeakElement(rows, columns, mid)

इनपुट: मैट्रिक्स की पंक्ति और स्तंभ, और मध्य पंक्ति स्थान।

आउटपुट: मैट्रिक्स में पीक एलिमेंट।

शुरू     maxMid := 0     maxMidIndex := findMaxMid(rows, mid, maxMid)     यदि mid पहला या अंतिम स्तंभ है, तो       वापस करें maxMid     यदि maxMid >= पिछली और अगली पंक्ति के आइटम मध्य स्तंभ के लिए, तो       वापस करें maxMid     यदि maxMid अपने बाएँ तत्व से कम है, तो       res := findPeakElement(rows, columns, mid – mid/2)       वापस करें res     यदि maxMid अपने दाएँ तत्व से कम है, तो       res := findPeakElement(rows, columns, mid + mid/2)       वापस करें res अंत

उदाहरण

#include<iostream> #define M 4 #define N 4 using namespace std; int arr[M][N] = {     {10, 8, 10, 10},     {14, 13, 12, 11},     {15, 9, 11, 21},     {16, 17, 19, 20} }; int findMaxMid(int rows, int mid, int&max) {     int maxIndex = 0;     for (int i = 0; i < rows; i++) {     //मध्य स्तंभ में अधिकतम तत्व खोजें       if (max < arr[i][mid]) {         max = arr[i][mid];         maxIndex = i;       }     }     return maxIndex; } int findPeakElement(int rows, int columns, int mid) {     int maxMid = 0;     int maxMidIndex = findMaxMid(rows, mid, maxMid);     if (mid == 0 || mid == columns-1)      //पहले और अंतिम स्तंभ के लिए, maxMid अधिकतम है       return maxMid;     // यदि maxMid भी पीक है     if (maxMid >= arr[maxMidIndex][mid-1] && maxMid >= arr[maxMidIndex][mid+1])       return maxMid;     if (maxMid < arr[maxMidIndex][mid-1])      // यदि maxMid अपने बाएँ तत्व से कम है       return findPeakElement(rows, columns, mid - mid/2);     return findPeakElement(rows, columns, mid+mid/2); } int main() {     int row = 4, col = 4;     cout<< "The peak element is: "<<findPeakElement(row, col, col/2); }

आउटपुट

The peak element is: 21

  1. - पायथन में मेजोरिटी एलिमेंट (Majority Element) खोजें

    समस्या विवरण एक पूर्णांक सरणी (array) दी गई है, उस तत्व को खोजें जो सरणी के आकार के आधे से अधिक बार आता है (मेजोरिटी एलिमेंट)। उदाहरण 1 4 गलत है। वास्तव में यह उदाहरण गलत है।) सुधार: मेजोरिटी एलिमेंट की परिभाषा: वह तत्व जो n/2 से अधिक बार आता है। सही उदाहरण 6/2 = 3)। समाधान: हैश मैप (डिक्शनरी)

  1. - पायथन में ऐरे में Kवां सबसे बड़ा एलिमेंट

    मान लीजिए हमारे पास एक अनसॉर्टेड ऐरे है, हमें उस ऐरे से kवां सबसे बड़ा एलिमेंट ढूंढना है। इसलिए यदि ऐरे [3,2,1,5,6,4] है और k = 2, तो परिणाम 5 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - हम एलिमेंट्स को सॉर्ट करेंगे, यदि k 1 है, तो अंतिम एलिमेंट लौटाएं, अन्यथा array[n - k] लौटाएं, जहां n

  1. - पायथन में पीक एलिमेंट ढूंढें

    मान लीजिए हमें एक ऐरे में पीक एलिमेंट ढूंढना है। पीक एलिमेंट वह एलिमेंट है जो अपने पड़ोसियों से बड़ा है। मान लीजिए हमारे पास एक इनपुट ऐरे nums है, जहां nums[i] ≠ nums[i+1], एक पीक एलिमेंट खोजें और उसका इंडेक्स लौटाएं। ऐरे में कई पीक एलिमेंट हो सकते हैं, उस स्थिति में किसी एक पीक एलिमेंट का इंडेक्स ल