LeetCode-Find Pivot Index

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24133491/article/details/82288830

Description:
Given an array of integers nums, write a method that returns the “pivot” index of this array.

We define the pivot index as the index where the sum of the numbers to the left of the index is equal to the sum of the numbers to the right of the index.

If no such index exists, we should return -1. If there are multiple pivot indexes, you should return the left-most pivot index.

Example 1:

Input: 
nums = [1, 7, 3, 6, 5, 6]
Output: 3

Explanation:
The sum of the numbers to the left of index 3 (nums[3] = 6) is equal to the sum of numbers to the right of index 3.
Also, 3 is the first index where this occurs.

Example 2:

Input: 
nums = [1, 2, 3]
Output: -1

Explanation:
There is no index that satisfies the conditions in the problem statement.

Note:

  • The length of nums will be in the range [0, 10000]. Each element
  • nums[i] will be an integer in the range [-1000, 1000]
    .
    题意:给定一个数组,要求找出一个数组中的位置index,使其满足在index左侧所有元素的和与右侧所有元素的和相等;如果这样子的index,则返回-1;

解法:既然题目要求下边位置左右两侧和相同,那么我们可以用数组sumOfLeft来存储当前下标位置处左侧所有元素的和,用数组sumOfRight来存储当前下标位置处右侧所有元素的和;最后,遍历数组,对每个位置处的元素,判断左右两侧所有元素的和是否相同;

class Solution {
    public int pivotIndex(int[] nums) {
        if (nums.length == 0) {
            return -1;
        }

        int[] sumOfLeft = new int[nums.length];
        int[] sumOfRight = new int[nums.length];
        sumOfLeft[0] = nums[0];
        sumOfRight[nums.length - 1] = nums[nums.length - 1];

        for(int i = 1; i < nums.length; i++) {
            sumOfLeft[i] = sumOfLeft[i - 1] + nums[i];
        }
        for(int i = nums.length-2; i >= 0; i--) {
            sumOfRight[i] = sumOfRight[i + 1] + nums[i];
        }

        for(int i = 0; i < nums.length; i++) {
            int sum1 = i - 1 >= 0 ? sumOfLeft[i - 1] : 0;
            int sum2 = i + 1 < nums.length ? sumOfRight[i + 1] : 0;
            if (sum1 == sum2) {
                return i;
            }
        }
        return -1;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_24133491/article/details/82288830