- 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.