All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0701_0800.s0724_find_pivot_index.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0701_0800.s0724_find_pivot_index;

// #Easy #Array #Prefix_Sum #Level_1_Day_1_Prefix_Sum
// #2022_03_24_Time_2_ms_(69.67%)_Space_52.1_MB_(59.19%)

/**
 * 724 - Find Pivot Index\.
 *
 * Easy
 *
 * 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`
 *
 * **Note:** This question is the same as 1991: [https://leetcode.com/problems/find-the-middle-index-in-array/](https://leetcode.com/problems/find-the-middle-index-in-array/)
**/
public class Solution {
    public int pivotIndex(int[] nums) {
        if (nums == null || nums.length == 0) {
            return -1;
        }
        int[] sums = new int[nums.length];
        sums[0] = nums[0];
        for (int i = 1; i < nums.length; i++) {
            sums[i] = sums[i - 1] + nums[i];
        }
        for (int i = 0; i < nums.length; i++) {
            int temp = sums[nums.length - 1] - sums[i];
            if (i == 0 && 0 == temp || (i > 0 && sums[i - 1] == temp)) {
                return i;
            }
        }
        return -1;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy