LeetCode - 724. Find Pivot Index (Array, Prefix Sum)*

YAMAMAMO·2022년 2월 5일
0

LeetCode

목록 보기
15/100

문제

정수 번호 배열이 지정되면 이 배열의 피벗 인덱스를 계산합니다.
피벗 인덱스는 인덱스의 왼쪽에 있는 모든 숫자의 합이 인덱스의 오른쪽에 있는 모든 숫자의 합과 같은 인덱스입니다.
인덱스가 배열의 왼쪽 가장자리에 있으면 왼쪽에 요소가 없으므로 왼쪽 합계는 0입니다. 이는 배열의 오른쪽 가장자리에도 적용됩니다.
맨 왼쪽 피벗 인덱스를 반환합니다. 이러한 인덱스가 없으면 -1을 반환합니다.

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.

https://leetcode.com/problems/find-pivot-index/

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

풀이

자바입니다.

  • 배열의 총합을 구한다. sum
  • 인덱스 i 기준 왼쪽 총합은 pi, 오른쪽 총합은 sum-pi-nums[i].
class Solution {
    public int pivotIndex(int[] nums) {
        int sum = 0; //배열의 총합
        int pi = 0; //인덱스 i 기준 왼쪽 총합
        for(int a:nums) sum+=a;
        for(int i=0; i<nums.length;i++){
            if(pi==sum-pi-nums[i]) return i;
            pi+=nums[i];
        }
        return -1;
    }
}
profile
안드로이드 개발자

0개의 댓글