
加油站(贪心)
发布日期:2021-05-07 23:43:45
浏览次数:17
分类:精选文章
本文共 895 字,大约阅读时间需要 2 分钟。
题目描述
环形路上有n个加油站,第i个加油站的汽油量是gas[i].
你有一辆车,车的油箱可以无限装汽油。从加油站i走到下一个加油站(i+1)花费的油量是cost[i],你从一个加油站出发,刚开始的时候油箱里面没有汽油。 求从哪个加油站出发可以在环形路上走一圈。返回加油站的下标,如果没有答案的话返回-1。 注意: 答案保证唯一。 示例1 输入 复制 [2,3,1],[3,1,2] 返回值 1
class Solution { public: /** * * @param gas int整型vector * @param cost int整型vector * @return int整型 */ int canCompleteCircuit(vector & gas, vector & cost) { // write code here int whole = 0; // 全局的加油、油耗的差 int remain = 0; // 每到下一站剩余的油量 int index = -1; for(int i = 0; i < gas.size(); i++){ whole += gas[i] - cost[i]; remain += gas[i] - cost[i]; // 到下一站的油量小于0,说明不能从i走到i+1 if(remain < 0){ remain = 0; index = i; } } // 有解 if(whole >= 0) return index + 1; else return -1; }};