• 134. Gas Station


    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.

    Brutal way O(n^2) ,计算每一个点,做一边sum gas and cost 会超时tle

    public class Solution {
        public int canCompleteCircuit(int[] gas, int[] cost) {
            int step = gas.length;
            int start = 0;
            for(int i = 0; i < step; i++){
              int temp = start;
              int station = 0;
              int sumGas = 0;
              int sumCost = 0;
              while(sumCost <= sumGas && station < step){
                sumGas += gas[start%step];
                sumCost += cost[start%step];
                start ++;
                station ++;
              } 
              if(station >= step && sumGas >= sumCost) return temp;
              else if(station < step) start = temp + 1;
            }
            return -1;
        }
    }

    最优解:

    设一个total = sum (gas[i] - cost[i])

    if(total < 0) return -1

    if(total > 0) 一定存在一个解;

    用sum = gas[i] + cost[i]

    if(sum < 0)  i - > i+1 sum要重新算

    if(sum > 0)  sum 累加

    public class Solution {
        public int canCompleteCircuit(int[] gas, int[] cost) {
            int total = 0;
            int sum = 0;
            int start = 0;
            for(int i = 0; i < gas.length; i++){
                total += gas[i] - cost[i];
            }
            if(total < 0)
                return -1;
                
            for(int i = 0; i < gas.length; i++){
                if(sum >= 0){
                    sum += gas[i] - cost[i];
                }
                else{
                    sum = gas[i] - cost[i];
                    start = i; //记录新的起点
                }
            }
            return start;
        }
    }
  • 相关阅读:
    Xcode7 真机调试步骤以及遇到的问题解决办法
    AndroidStudio .gitinore编写
    Android Studio Jar、so、library项目依赖
    Android studio导入eclipse项目混淆打包出错
    spring中ref属性与<ref/>标签
    NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.servlet.view.InternalResourceViewResolver' available
    Maven学习笔记
    Tomcat日志与Log4j日志
    Git笔记
    Tomcat学习
  • 原文地址:https://www.cnblogs.com/joannacode/p/5958792.html
Copyright © 2020-2023  润新知