- Published on

# Find the Middle Index in Array.

**Problem of the day** - Find the Middle Index in Array

**Tag** - Easy

Given a **0-indexed** integer array `nums`

, find the **leftmost** `middleIndex`

(i.e., the smallest amongst all the possible ones).

A `middleIndex`

is an index where `nums[0] + nums[1] + ... + nums[middleIndex-1] == nums[middleIndex+1] + nums[middleIndex+2] + ... + nums[nums.length-1]`

.

If `middleIndex == 0`

, the left side sum is considered to be `0`

. Similarly, if `middleIndex == nums.length - 1`

, the right side sum is considered to be `0`

.

Return *the leftmost*

`middleIndex`

*that satisfies the condition, or*

`-1`

*if there is no such index*.

**Example 1:**

**Input:** nums = [2,3,-1,8,4]
**Output:** 3
**Explanation:**
The sum of the numbers before index 3 is: 2 + 3 + -1 = 4
The sum of the numbers after index 3 is: 4 = 4

Problem is pretty simple. For each index, we just need to check if sum of the left side element and right side elements is equal, just return the current index otherwise return -1.

There are multiple ways to find the sum of left and right elements. Worst approach would be to calculate this, for each element by going left and right.

One of the good approach, I could think of to calculate total sum in one time and keep on subtracting the sum till current index to get diff.

**Here is the code**

`class Solution {public: int findMiddleIndex(vector<int>& nums) { int total = 0; int sum_till = 0; // total sum for(auto val: nums) total += val; for(int i=0;i<nums.size();i++) { // if sum till now (left sum), is equal to total - sum till now - (means right sum) if(sum_till == total - sum_till - nums[i]) return i; sum_till += nums[i]; } return -1; }};`

If you feel, I am missing on something, feel free to reach out to me

I welcome your suggestions to improve it further!

Thanks for being part of my daily-code-workout journey. As always, if you have any thoughts about anything shared above, don't hesitate to reach out.

You might like previous editions of my coding diary

- Day #34 - Reverse Prefix of Word.
- Day #33 - Word Pattern.
- Day #32 - Remove Outermost Parentheses.
- Day #31 - Check if Numbers Are Ascending in a Sentence.
- Day #30 - Finding the Users Active Minutes.
- Day #29 - Product of array except self.
- Day #28 - Convert 1D Array Into 2D Array.
- Day #27 - Minimum Moves to Convert String.
- Day #26 - Two Out of Three.