|
This post is completed by 1 user
|
Add to List |
233. Find the local minima in a given array
Objective: Given an array of integers write an algorithm to find the local minima.
Local Minima: An element is considered as local minima if it is less than both of its neighbors (if neighbors exist).
Example:
int [] arrA = {11, 4, 2, 5, 11, 13, 5};
Output: Local Minima is: 2
int []arrA = {1,2,3,4};
Output: 1
int []arrA = {3};
Output: 3
int []arrA = {6,4};
Output: 4
NOTE: There could be many local minima’s, we need to find anyone.\
Approach:
Naïve: Use for loop and compare every element with its neighbor.
Time Complexity – O(n)
Binary Search Approach:
- Check if the mid element is smaller than its left and right neighbors.
- If the left neighbor is less than the mid element then make a recursive call to the left half of the array. (There will be at least one local minima in the left half, take few examples to check)
- If the right neighbor is less than the mid element then make a recursive call to the right half of the array.
Time Complexity – O(logn)
Output:
Local Minima is: 2
Reference: this