LeetCode 75: 724. Find Pivot Index

김준수·2024년 3월 7일
0

LeetCode 75

목록 보기
19/63
post-custom-banner

Description

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.


정수 배열 nums가 주어지면 이 배열의 피벗 인덱스를 계산합니다.

피벗 인덱스는 어느 인덱스의 왼쪽에 있는 모든 숫자의 합과 인덱스의 오른쪽에 있는 모든 숫자의 합과 동일한 인덱스입니다.

인덱스가 배열의 왼쪽 가장자리에 있으면 왼쪽에 요소가 없으므로 왼쪽 합은 0입니다. 마찬가지로 인덱스가 배열의 오른쪽 가장자리인 경우에는 오른쪽 합은 0이 됩니다.

피벗 인덱스 중 가장 왼쪽에 있는 피벗 인덱스를 반환합니다. 해당 피벗 인덱스가 없으면 -1을 반환합니다.

Example 1:

Input: nums = [1,7,3,6,5,6]
Output: 3
Explanation:
피벗 인덱스는 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:
조건을 만족하는 인덱스가 없습니다.

Example 3:

Input: nums = [2,1,-1]
Output: 0
Explanation:
피벗 인덱스는 0.
Left sum = 0 (인덱스 왼쪽의 요소가 없으므로 0)
Right sum = nums[1] + nums[2] = 1 + -1 = 0

Constraints:

  • 1 <= nums.length <= 104
  • -1000 <= nums[i] <= 1000

알림: 이 문제는 1991번 문제와 같습니다.

Solution


import java.util.Arrays;

class Solution {
    public int pivotIndex(int[] nums) {
        int leftSum = 0;
        int rightSum = Arrays.stream(nums).sum() - nums[0];

        if (leftSum == rightSum)
            return 0;

        for (int i = 1; i < nums.length; i++) {
            leftSum += nums[i - 1];
            rightSum -= nums[i];
            if (leftSum == rightSum)
                return i;
        }

        return -1;
    }
}
post-custom-banner

0개의 댓글