Grokking the Coding Interview: Patterns for Coding Questions
Ask Author
Back to course home

0% completed

Vote For New Content
Simpler c++ solution: We can store a diff every jump and perform casual binary search.

lejafilip

Sep 15, 2024

  static int searchMinDiffElement(const vector<int>& arr, int key) {     if(arr[arr.size() - 1] <= key)       return arr[arr.size() - 1];     else if(arr[0] >= key)       return arr[0];     std::pair<int, int> minDiff{std::numeric_limits<int>::max(), -1};     auto start = 0;     auto end = arr.size() - 1;         while(start <= end)     {       auto mid = (start + end) / 2;       if(arr[mid] == key)         return key;       else if(arr[mid] > key)       {         auto diff = std::abs(arr[mid] - key);         if(diff < minDiff.first)         {           minDiff.first = diff;           minDiff.second = arr[mid];         }         end = mid - 1;       }       else       {         auto diff = std::abs(arr[mid] - key);         if(diff < minDiff.first)         {           minDiff.first = diff;           minDiff.second = arr[mid];         }         start = mid + 1;       }     }     return minDiff.second;   }

0

0

Comments
Comments

On this page