You have been given an array/list βARRβ of integers consisting of βNβ integers. You are also given an integer βXβ. In one operation, you can either remove the leftmost or the rightmost element and add that to the sum of removed elements so far. Your task is to return the minimum number of operations such that the sum of removed elements becomes exactly βXβ. If it is not possible return -1.
For Example :Letβs say you have an array/list [1, 3, 5, 3] and βXβ is 7.
We can first remove the rightmost element i.e. 3. The array becomes [1,3,5]. In the next step, we can remove the leftmost element i.e 1. The array becomes [3,5] and the sum of removed elements so far becomes 4. In the next step, we can remove the leftmost element i.e 3. The array becomes [5] and the sum of removed elements so far is 7. We have reached our target X i.e 7. Therefore the minimum number of operations to reach βXβ is 3.
The first line contains a single integer βTβ representing the number of test cases.
The first line of each test case contains two single space-separated integers βNβ and βXβ representing the size of the array/list βARRβ and the target you need to reach.
The second line and the last line of input contain βNβ single space-separated integers representing the array/list elements.
Output Format :
For each test case print the minimum number of operations such that the sum of removed elements becomes exactly βXβ.If it is not possible print -1.
Print the output of each test case in a separate line.
Note :
You do not need to print anything; it has already been taken care of. Just implement the function.
1 <= T <= 10
1 <= N <= 1000
1 <= X <= 10^9
1 <= βARR[i]β <= 10^6
Where βARR[i]β is an element of array/list ARR.
Time Limit: 1sec
2
4 7
1 2 3 4
4 4
1 2 3 4
2
1
Test Case 1 :
We can first remove the rightmost element i.e. 4. The array becomes [1,2,3]. In the next step, we can remove the rightmost element i.e 3. The array becomes [1,2]. The sum of removed elements is 7. We have reached our target X i.e 7. Therefore the minimum number of operations is 2.
Therefore the answer is 2.
Test Case 2 :
We can first remove the rightmost element i.e. 4. The array becomes [1,2,3]. The sum of removed elements is 4. We have reached our target X i.e 4. Therefore the minimum number of operations is 1.
Therefore the answer is 1.
2
4 11
1 2 3 4
8 4
1 2 3 4 4 3 2 1
-1
3
Try to think of all possible ways.
We have 2 choices at each point either we can take from the left end of the remaining array or the right end of the remaining array. Therefore a total number of ways are β2^Nβ as we can remove the elements almost βNβ times. We just need to run across all possible ways.
Algorithm
O(N*2^N), where βNβ denotes the size of the array/list.
For each of the β2^Nβ ways, we are iterating the array/list βARRβ of length βNβ exactly once.
O(1),
We are using constant space.