https://leetcode.com/problems/find-pivot-index/description/?envType=study-plan-v2&envId=leetcode-75
처음엔 아래같이 left 누계배열, right 누계배열 해서 풀었는데
사실 leftSum, rightSum 만 있으면 되므로 배열이 전혀 필요없다.
뭔생각을하고 풀었을까?
class Solution {
public int pivotIndex(int[] nums) {
int lefts[] = new int[nums.length];
int leftSum = 0;
int rights[] = new int[nums.length];
int rightSum = 0;
for (int i=0; i<nums.length; i++) {
leftSum += nums[i];
rightSum += nums[nums.length - i - 1];
lefts[i] = leftSum;
rights[nums.length - i - 1] = rightSum;
}
for (int i=0; i<nums.length; i++) {
int left = 0;
if (i > 0) {
left = lefts[i - 1];
}
int right = 0;
if (i < nums.length - 1) {
right = rights[i + 1];
}
if (left == right) {
return i;
}
}
return -1;
}
}
수정본
class Solution {
public int pivotIndex(int[] nums) {
int totalSum = 0;
int leftSum = 0;
for (int n : nums) {
totalSum += n;
}
for (int i=0; i<nums.length; i++) {
totalSum -= nums[i];
if (totalSum == leftSum) {
return i;
}
leftSum += nums[i];
}
return -1;
}
}