[Prefix Sum, Easy] Find Pivot Index

송재호·2025년 3월 12일
0

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;
    }
}
profile
식지 않는 감자

0개의 댓글