zoukankan      html  css  js  c++  java
  • [LeetCode] 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.

    Hide Tags
     Greedy
     
      一道贪心算法的题目。
     
    #include <iostream>
    #include <vector>
    using namespace std;
    
    class Solution {
    public:
        int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
            int n = gas.size();
            if(n==0||n!=cost.size())  return -1;
            if(n==1)    return gas[0]>=cost[0]?0:-1;
            int stardIdx =0,endIdx = 0;
            int leave = 0;
            do{
                if(leave+gas[endIdx]>=cost[endIdx]){
                    leave = leave+gas[endIdx]-cost[endIdx];
                    endIdx++;
                    if(endIdx==n)   endIdx = 0;
                    continue;
                }
                stardIdx--;
                if(stardIdx==-1)    stardIdx=n-1;
                leave = leave + gas[stardIdx] - cost[stardIdx];
            }while(stardIdx!=endIdx);
            if(leave >=0)   return stardIdx;
            return -1;
        }
    
    };
    
    int main()
    {
        vector<int > gas{4};
        vector<int > cost{5};
        Solution sol;
        cout<<sol.canCompleteCircuit(gas,cost)<<endl;
    //    for(int i=0;i<gas.size();i++){
    //        cout<<gas[i]<<endl;
    //    }
        return 0;
    }
  • 相关阅读:
    [AX]AX2012开发新特性outer join中使用QueryFilter
    [AX]AX2012开发新特性表继承
    docker环境安装
    poj 3469
    poj 1187
    poj 1159
    poj 2135
    poj 1273
    poj 1458
    poj 1141
  • 原文地址:https://www.cnblogs.com/Azhu/p/4332812.html
Copyright © 2011-2022 走看看