/**
1) Initialize leftsum as 0
2) Get the total sum of the array as sum
3) Iterate through the array and for each index i, do following.
a) Update sum to get the right sum.
sum = sum - arr[i] sum is now right sum
b) If leftsum is equal to sum, then return current index.
c) leftsum = leftsum + arr[i]
4) return -1
**/
int equilibrium(int arr[], int n)
{
int sum = 0; // initialize sum of whole array
int leftsum = 0; // initialize leftsum
int i;
/* Find sum of the whole array */
for (i = 0; i < n; ++i)
sum += arr[i];
for( i = 0; i < n; ++i)
{
sum -= arr[i]; // sum is now right sum for index i
if(leftsum == sum)
return i;
leftsum += arr[i];
}
/* If no equilibrium index found, then return 0 */
return -1;
}
[LinkedIn]find balance (equilibrium) point (index) in an array (unsorted)
最新推荐文章于 2021-12-23 10:30:00 发布