Untitled

 avatar
unknown
plain_text
16 days ago
952 B
2
Indexable
//Approach-2 (Using O(1) space)
class Solution{
    public:
    // Function to find equilibrium point in the array.
    // a: input array
    // n: size of array

    int equilibriumPoint(long long a[], int n) {
        if(n == 1)
            return 1; //if only 1 element, it's left and right are equal :-)
        else if(n == 2)
            return -1; //We can't have an equilibrium with only 2 elements :-(
        
        
        
        long long left_sum = a[0];
        long long totalSum = 0;
        
        for(int i = 0; i<n; i++) {
            totalSum += a[i];
        }
        
        
        for(int i = 1; i<n; i++) {
            int right_sum = totalSum-left_sum-a[i]; //This logic is same as explained in Approach-1
            
            if(left_sum == right_sum)
                return i+1;
                
            left_sum += a[i];
        }
        
        return -1;
    }

};
Leave a Comment