LeetCode Challenge #724. Find Pivot Index

Given an array of integers `nums`, calculate the pivot index of this array.

The pivot index is the index where the sum of all the numbers strictly to the left of the index is equal to the sum of all the numbers strictly to the index’s right.

If the index is on the left edge of the array, then the left sum is `0` because there are no elements to the left. This also applies to the right edge of the array.

Return the leftmost pivot index. If no such index exists, return `-1`.

Example 1:

```Input: nums = [1,7,3,6,5,6]
Output: 3
Explanation:
The pivot index is 3.
Left sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11
Right sum = nums[4] + nums[5] = 5 + 6 = 11
```

Example 2:

```Input: nums = [1,2,3]
Output: -1
Explanation:
There is no index that satisfies the conditions in the problem statement.```

Example 3:

```Input: nums = [2,1,-1]
Output: 0
Explanation:
The pivot index is 0.
Left sum = 0 (no elements to the left of index 0)
Right sum = nums[1] + nums[2] = 1 + -1 = 0
```

Constraints:

• `1 <= nums.length <= 104`
• `-1000 <= nums[i] <= 1000`
C++ Video Solution
Java Solution
```				```
class Solution {
public int pivotIndex(int[] nums) {
int rsum = 0;
for(int ele : nums ){
rsum += ele ;
}
int lsum = 0 ;
for(int i=0;i<nums.length;i++){
rsum -= nums[i];

if(rsum == lsum){
return i ;
}
lsum += nums[i];
}
return -1 ;
}
}
```
```
C++ Solution
```				```
class Solution {
public:
int pivotIndex(vector<int>& nums) {

// Calculate the total sum of all elements in the array
int sum = 0;

for (int i = 0; i < nums.size(); i++) {
sum += nums[i];
}

// Initialize variables to store the sum on the left and right of the current index
int sum1 = sum;  // Initially set to the total sum
int sum2 = 0;    // Initially set to 0

// Iterate through the array to find the pivot index
for (int i = 0; i < nums.size(); i++) {

// Update sum1 by subtracting the current element
sum1 -= nums[i];

// Check if the sum on the left (sum1) is equal to the sum on the right (sum2)
if (sum1 == sum2) {
// If true, return the current index as the pivot index
return i;
}

// Update sum2 by adding the current element
sum2 += nums[i];
}

// If no pivot index is found, return -1
return -1;
}
};

```
```
Code Explanation

In this program, we have to find the pivot index in an array of integers (‘nums’), where the pivot index is the index such that the sum of elements to the left is equal to the sum of elements to the right.

Let’s see the step-by-step approach towards the solution:

1. We will calculate the total sum of all elements in the array (‘nums’) using the variable ‘sum’.
1. Now, for finding the pivot index, initialise two variables, ’sum1’ and ‘sum2’, where ‘sum1’ is initially set to the total sum and ‘sum2’ is set to 0.

The ‘For’ loop is used here to iterate the code through the array. We will subtract the current element from ‘sum1’ and check it ‘sum1’ is equal to ‘sum2’ or not.

Sum1 -= nums[ i ]

1. After that, we will check whether (sum==sum1) if yes, return ’ i ‘, i.e. the current index as the pivot index.
• if they are not equal, update ’sum2’ by adding the current element. Now, since it is a pivot we have to include it now
1. If no index is found till the last point, then return -1 to indicate there’s no pivot index.

Summary:- This solution tackles the problem of finding the pivot index in an array by maintaining two running sums. It’s a concise and efficient approach with a linear time complexity.