Dev/Algorithm

134. Gas Station

rryu09 2024. 10. 8. 10:48

리트코드 134. Gas Station

 

class Solution:
    def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
        total=0
        curr=0
        res = 0
        for i in range(len(gas)):
            total += gas[i] - cost[i]
            curr += gas[i]- cost[i]
            if curr<0:
                curr = 0
                res = i+1
        return res if total >=0 else -1

        # total, curr, 인덱스 값을 놓고
        # 순회하면서 가스-비용 계산한다
        # 만약 현재 노드까지에서 가스 - 비용이 마이너스라면 이 시작 지점으로 갈 수 없다는 뜻이므로
        # curr를 0으로 만들고 res에 하나를 더한다
        # 시작 지점을 하나씩 늘려 루프를 끝내고 total 이 0 이상이라면 완주할 수 있음

        # 시간복잡도는 gas 길이만큼 for 한번이므로 O(n)
        # 공간복잡도는 O(1)

처음에는 누적합으로 시작 포인트를 기점으로 모두 더한 배열을 한 칸씩 비교하다가 TLE가 났다