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

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


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

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

Input:
A matrix of different numbers.
10  8  10  10
14 13  12  11
15  9  11  11
15  9  11  21
16 17  19  20

Output:
The peak element of the matrix.
Here the peak element is: 21

एल्गोरिदम

findMaxMid(पंक्तियाँ, मध्य, अधिकतम)

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

आउटपुट: अधिकतम आइटम और अधिकतम तत्व की अनुक्रमणिका अपडेट करें।

Begin
   maxIndex := 0
   for all rows r in the matrix, do
      if max < matrix[i, mid], then
         max = matrix[i, mid],
         maxIndex := r
   done
   return maxIndex
End

findPeakElement(पंक्तियों, कॉलम, मध्य)

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

आउटपुट - मैट्रिक्स में पीक तत्व।

Begin
   maxMid := 0
   maxMidIndex := findMaxMid(rows, mid, maxMid)

   if mid is first or last column, then
      return maxMid

   if maxMid>= item of previous and next row for mid column, then
      return maxMid

   if maxMid is less than its left element, then
      res := findPeakElement(rows, columns, mid – mid/2)
      return res

   if maxMid is less than its right element, then
      res := findPeakElement(rows, columns, mid + mid/2)
      return res
End

उदाहरण

#include<iostream>
#define M 4
#define N 4
using namespace std;

intarr[M][N] = {
   {10, 8, 10, 10},
   {14, 13, 12, 11},
   {15, 9, 11, 21},
   {16, 17, 19, 20}
};

intfindMaxMid(int rows, int mid, int&max) {
   intmaxIndex = 0;

   for (int i = 0; i < rows; i++) {    //find max element in the mid column
      if (max <arr[i][mid]) {
         max = arr[i][mid];
         maxIndex = i;
      }
   }
   return maxIndex;
}

intfindPeakElement(int rows, int columns, int mid) {
   intmaxMid = 0;
   intmaxMidIndex = findMaxMid(rows, mid, maxMid);

   if (mid == 0 || mid == columns-1)    //for first and last column, the maxMid is maximum
      return maxMid;
   // If maxMid is also peak
   if (maxMid>= arr[maxMidIndex][mid-1] &&maxMid>= arr[maxMidIndex][mid+1])
      return maxMid;

   if (maxMid<arr[maxMidIndex][mid-1])     // If maxMid is less than its left element
      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. पायथन में अधिकांश तत्व

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है। कार्य दिए गए सरणी में किसी विशेष तत्व की अनुक्रमणिका ढूंढना है। उदाहरण के लिए, इनपुट-1 - N = 8 A[ ] = { 1,2,4,3,3,1,1,5} आउटपुट - 1 स्पष्टीकरण - पूर्णांकों के दिए गए सरणी में, सबसे अधिक दिखाई देने वाली संख्या 1 है। इस प्रकार आउटपुट 1 है। इनपुट-2 -

  1. पायथन में एक सरणी में Kth सबसे बड़ा तत्व

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

  1. पायथन में पीक एलिमेंट खोजें

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