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