문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
정수 배열 nums가 주어졌을 때, 이 배열의 피벗 인덱스를 계산해라.
피벗 인덱스는 해당 인덱스 바로 왼쪽에 있는 모든 숫자의 합과 해당 인덱스 바로 오른쪽에 있는 모든 숫자의 합이 같아지는 인덱스이다.
인덱스가 배열의 왼쪽 끝에 있으면 왼쪽에 요소가 없으므로 0이 된다. 이는 배열의 오른쪽 끝에도 동일하게 적용된다.
가장 왼쪽 피벗 인덱스를 반환해라. 그러한 인덱스가 존재하지 않으면 -1을 반환해라.
#1
Input: nums = [1, 7, 3, 6, 5, 6]
Output: 3
Explanation:
피벗 인덱스는 3이다.
왼쪽 합계는 nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11
오른쪽 합계는 nums[4] + nums[5] = 5 + 6 = 11
#2
Input: nums = [1, 2, 3]
Output: -1
Explanation:
조건을 만족하는 인덱스가 없다.
#3
Input: nums = [2, 1, -1]
Output: 0
Explanation:
피벗 인덱스는 0이다.
왼쪽 합계는 0 (인덱스 0의 왼쪽은 요소가 없다)
오른쪽 합계는 nums[1] + nums[2] = 1 + -1 = 0
class Solution {
public int pivotIndex(int[] nums) {
int total = 0;
for(int num : nums){
total += num;
}
int leftTotal = 0;
for(int i = 0; i < nums.length; i++){
int rightTotal = total - leftTotal - nums[i];
if(rightTotal == leftTotal){
return i;
}
leftTotal += nums[i];
}
return -1;
}
}