168. Leetcode 134. 加油站 (贪心算法-模拟题目)

168. Leetcode 134. 加油站 (贪心算法-模拟题目)_第1张图片

168. Leetcode 134. 加油站 (贪心算法-模拟题目)_第2张图片

class Solution:
    def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
        cur_rest_acc = 0 # 当前剩余油量累计
        total_rest_acc = 0 # 全局剩余量累计
        start = 0 # 起始位置
        for i in range(len(gas)):
            cur_rest_acc += gas[i] - cost[i]
            total_rest_acc += gas[i] - cost[i]
            # 如果当前加油站的累积量小于0,说明不能作为起始点,需要往后找并且从0开始
            if cur_rest_acc < 0:
                start = i + 1
                cur_rest_acc = 0

        # 如果剩余油量累计小于0,说明总消耗大于总补给
        if total_rest_acc < 0:
            return -1

        return start

你可能感兴趣的:(2022刷题-目标400+,贪心算法,leetcode)