+ 1

choose a language to answer this

A zero-indexed array A consisting of N integers is given. An equilibrium index of this array is any integer P such that 0 ≤ P < N and the sum of elements of lower indices is equal to the sum of elements of higher indices, i.e. A[0] + A[1] + ... + A[P−1] = A[P+1] + ... + A[N−2] + A[N−1]. Sum of zero elements is assumed to be equal to 0. This can happen if P = 0 or if P = N−1. For example, consider the following array A consisting of N = 8 elements: A[0] = -1 A[1] = 3 A[2] = -4 A[3] = 5 A[4] = 1 A[5] = -6 A[6] = 2 A[7] = 1 P = 1 is an equilibrium index of this array, because: A[0] = −1 = A[2] + A[3] + A[4] + A[5] + A[6] + A[7] P = 3 is an equilibrium index of this array, because: A[0] + A[1] + A[2] = −2 = A[4] + A[5] + A[6] + A[7] P = 7 is also an equilibrium index, because: A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] = 0 and there are no elements with indices greater than 7. P = 8 is not an equilibrium index, because it does not fulfill the condition 0 ≤ P < N. Write a function: int solution(vector<int> &A); that, given a zero-indexed array A consisting of N integers, returns any of its equilibrium indices. The function should return −1 if no equilibrium index exists. For example, given array A shown above, the function may return 1, 3 or 7, as explained above. Assume that: N is an integer within the range [0..100,000]; each element of array A is an integer within the range [−2,147,483,648..2,147,483,647]. Complexity: expected worst-case time complexity is O(N); expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments). Elements of input arrays can be modified.

4th May 2017, 8:05 AM
Mpho Percy Mkhwanazi
Mpho  Percy Mkhwanazi - avatar
8 Réponses
+ 9
@rishabh your code is awesome. @mkhwanazi you can even run same code in java by replacining cout function with System.out.print and worst case time complexity of code is O(N^2)
4th May 2017, 9:39 AM
Vaibhav Sharma
Vaibhav Sharma - avatar
+ 9
@rishabh please accept java challenges
4th May 2017, 9:39 AM
Vaibhav Sharma
Vaibhav Sharma - avatar
+ 5
for(int i=1;i<n;i++) { int lhs=0; int p=i; int x=n-1; while(p>0) { lhs+=A[p]; p--; } while(x>i) { lhs-=A[x]; x--; } if(lhs==0) { cout<<"Equilibrium index : "<<i<<endl; } } Don't know about the complexity but still it would work. You could define this inside a function if you like.
4th May 2017, 8:33 AM
Rishabh Agrawal
Rishabh Agrawal - avatar
+ 5
This is c++
4th May 2017, 8:40 AM
Rishabh Agrawal
Rishabh Agrawal - avatar
+ 5
No problem, kindly please mark my answer with a tick ✓ if it helped you :) And Happy coding...
4th May 2017, 9:06 AM
Rishabh Agrawal
Rishabh Agrawal - avatar
+ 4
@vaibhav i m glad you liked my code. And it have not learned java much anyway if you could give me through the challenges, it would be beneficial for me.
4th May 2017, 10:28 AM
Rishabh Agrawal
Rishabh Agrawal - avatar
+ 2
which language is this?
4th May 2017, 8:39 AM
Mpho Percy Mkhwanazi
Mpho  Percy Mkhwanazi - avatar
+ 1
Thanks man
4th May 2017, 9:05 AM
Mpho Percy Mkhwanazi
Mpho  Percy Mkhwanazi - avatar