Ninja started working as a delivery boy for βCoding Ninjaβand used to deliver goodies to the students. As usual, he is on his way to deliver the goodies but he takes a wrong turn and arrives at the wrong location. So now he sees the map of that locality and looks for his target on the map. The map contains the house number in the form of a special array i.e in the form of a βMountain Arrayβ.
A Mountain array(βARRβ) is an array data structure that has the following properties:
1. |ARR| >= 3
2. There exists some βiβ with 0 < i < arr.length-1 such that:
1. ARR[0] < ARR[1] < . . . < ARR[i-1] < ARR[i]
2. ARR[i] > ARR[i+1] > . . . > ARR[ARR.length-1]
Note:
You can't access the mountain array directly. You may only access the array using a MountainArray interface:
1. MountainArray.get(k) returns the element of the array at index k (0-indexed).
2. MountainArray.length() returns the length of the array.
Your task is to find the index of the target element. In case there is more than one same element in the array return the smaller index and in case the element is not present in the array return β-1β.
Follow-up:
Try to solve it at max 100 βMountainArray.get(k)βcalls.
Input Format:
The first line of input contains a βTβ number of test cases.
The first line of the test case, contains an integer βNβ denoting the size of the array.
The second line of each test case contains βNβ space-separated integers.
The third line of each test case contains, an integer βMβ denoting the target element i.e the element which you have to search in the mountain array.
Output Format:
For each test case, return the minimum index of the target element in case the element is not present return β-1β.
Note:
You are not required to print anything explicitly. It has already been taken care of. Just implement the function.
You will be provided with only the object of the mountain array and target element.
Constraints:
1 <= T <= 100
3 <= N <= 10^3
0 <= ARR[i] <= 10^4
0 <= M <= 10^4
Time Limit: 1 sec
2
5
1 2 3 2 1
3
4
1 2 3 2
5
2
-1
Test Case 1:
According to this test case β5β is the size of the array. In the next line β1β, β2β, β3β, β2β, β1β are the elements of our array. In the next line β3β is the target element which we have to search in our mountain array.
In our array index of β3β is β2β so our answer is β2β.
Test Case 2:
According to this test case β4β is the size of the array. In the next line β1β, β2β, β3β, β2β are the elements of our array. In the next line β5β is the target element which we have to search in our mountain array.
In our array elementβ5β is not present so we return β-1β.
2
3
1 2 1
2
4
1 2 3 1
1
1
0
Try to iterate whole array and check on each index whether it can be a peak or not.
O(N), where βNβ denotes the size of the array.
As we are traversing the whole array.
O(1)
As, we are using constant space.