Advertisement
vivek_ragi

PEAK_ELEMENT_2D

Jun 18th, 2021
734
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. class Solution {
  2. public:
  3.    
  4.     int findidx(vector<int> &v){
  5.         int n = v.size();
  6.         int max_element = INT_MIN, max_idx = -1;
  7.         for(int i = 0; i < n; ++i) {
  8.             if(max_element < v[i]) {
  9.                 max_element = v[i];
  10.                 max_idx = i;
  11.             }
  12.         }
  13.         return max_idx;
  14.     }
  15.    
  16.    
  17.     vector<int> findPeakGrid(vector<vector<int>>& mat) {
  18.         int rows = mat.size();
  19.         int cols = mat[0].size();
  20.         vector<int> temp;
  21.        
  22.         int l = 0, r = rows - 1;
  23.        
  24.         while(l < r) {
  25.             int m = (l + r + 1);
  26.             m/=2;
  27.            
  28.             int max_idx = findidx(mat[m]); // want maximum element index
  29.            
  30.             if(mat[m][max_idx] < mat[m - 1][max_idx]) {
  31.                 r = m - 1;
  32.             }
  33.             else {
  34.                 l = m;
  35.             }
  36.         }
  37.        
  38.         int ans_idx = findidx(mat[l]);
  39.         temp.push_back(l);
  40.         temp.push_back(ans_idx);
  41.        
  42.         return temp;
  43.     }
  44. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement