func canCompleteCircuit(gas []int, cost []int) int { sum := 0 minSum := 0 for i := 0; i < len(gas); i++ { diff := gas[i] - cost[i] sum += diff if sum < minSum { minSum = sum } } if sum < 0 { return -1 } if minSum >= 0 { return 0 } for i := len(gas) - 1; i >= 0; i-- { diff := gas[i] - cost[i] minSum += diff if minSum >= 0 { return i } } return -1}
贪心思路二
func canCompleteCircuit(gas []int, cost []int) int { totalSum := 0 curSum := 0 idx := 0 for i := 0; i < len(gas); i++ { curSum += gas[i] - cost[i] if curSum < 0 { totalSum += curSum curSum = 0 idx = i + 1 } } totalSum += curSum if totalSum < 0 { return -1 } return idx}