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;
    }
  • 相关阅读:
    [BZOJ2431] [HAOI2009]逆序对数列
    [Luogu2323] [HNOI2006]公路修建问题
    [Luogu2455] [SDOI2006]线性方程组
    [BZOJ3550] [Sdoi2014]数数
    [Noip2017] 列队
    [Luogu2824] [HEOI2016/TJOI2016]排序
    [BZOJ1060] [ZJOI2007]时态同步
    P1036 选数 题解
    快速幂取模算法详解
    同余定理及其应用
  • 原文地址:https://www.cnblogs.com/Azhu/p/4332812.html
Copyright © 2011-2022 走看看