• Gas Station 解答


    Problem

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i].

    You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations.

    Return the starting gas station's index if you can travel around the circuit once, otherwise return -1.

    Note:
    The solution is guaranteed to be unique.

    Solution

    Key to the solution is a conclusion:

    If sum of gas >= sum of costs, then there must exists one or more solution.

    If sum of gas < sum of costs, then there is no solution.

    So we can use method of exclusion here.

    We need also note here that if A can not reach C in a the sequence of A-->B-->C, then B can not make it either.

     1 public class Solution {
     2     public int canCompleteCircuit(int[] gas, int[] cost) {
     3         if (gas == null || cost == null)
     4             return -1;
     5         if (gas.length != cost.length)
     6             return -1;
     7         int start = 0;
     8         int sumRemaining = 0;
     9         int totalRemaining = 0;
    10         for (int i = 0; i < gas.length; i++) {
    11             int tmp = gas[i] - cost[i];
    12             if (sumRemaining >= 0) {
    13                 sumRemaining += tmp;
    14             } else {
    15                 start = i;
    16                 sumRemaining = tmp;
    17             }
    18             totalRemaining += tmp;
    19         }
    20         if (totalRemaining < 0)
    21             return -1;
    22         return start;
    23     }
    24 }
  • 相关阅读:
    取消select默认样式
    浏览器私有前缀
    兼容ie的background-size: cover;
    关于字体
    lorem 快速生成x个单词
    bash常见命令
    rgba透明的兼容处理
    JDK源码分析(10) CopyOnWriteArrayList
    JDK源码分析(9) LinkedHashMap
    JDK源码分析(8) StringBuffer & StringBuilder
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4858240.html
Copyright © 2020-2023  润新知