একটি অ্যারে A দেওয়া আছে। লোকাল মিনিমা হলো যেটি তার উভয় পাশের এলিমেন্ট থেকে ছোট বা সমান। কর্নার এলিমেন্টের জন্য এক পাশেই চেক করুন। বাইনারি সার্চ লজিক ব্যবহার করুন।
উদাহরণ
#include <iostream>
using namespace std;
int localMinima(int arr[], int left, int right, int n) {
int mid = left + (right-left)/2;
if ((mid==0 || arr[mid-1] > arr[mid]) && (mid==n-1 || arr[mid+1] > arr[mid]))
return mid;
else if (mid > 0 && arr[mid-1] < arr[mid])
return localMinima(arr, left, mid-1, n);
return localMinima(arr, mid+1, right, n);
}
int main() {
int arr[] = {9,6,3,14,5,7,4};
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Local minima: " << arr[localMinima(arr,0,n-1,n)];
return 0;
}
আউটপুট
Local minima: 3