首页 > 代码库 > Gas Station
Gas Station
题目提示采用贪心算法,不知道别人怎么实现的,可以参考下别人的思路。
答案如下:
class Solution {public: vector<int> leftgas; int len; int canCompleteCircuit(vector<int> &gas, vector<int> &cost) { len = gas.size(); int i=0; leftgas.resize(gas.size()); for (i=0; i<len; i++) { leftgas[i] = gas[i] - cost[i]; } pair<bool,int> temp; temp = IndexComplete(); if(temp.first == true) return temp.second; return -1; } pair<bool,int> IndexComplete() { int allgas = 0; int backwardindex = 0; int forwardindex = 0; bool ret; while(1) { allgas +=leftgas[forwardindex++]; if(allgas >= 0) { if(forwardindex == backwardindex || forwardindex == len) return pair<bool,int>(true,backwardindex); } else { ret = SupplyGas(allgas,backwardindex,forwardindex); if(ret == false) return pair<bool,int>(false,backwardindex); } } } bool SupplyGas(int &allgas,int& backwardindex,int forwardindex ) { while(1) { if(backwardindex == 0) { backwardindex = len-1; } else { backwardindex--; } allgas += leftgas[backwardindex]; if(allgas >= 0) { return true; } else { if(backwardindex <= forwardindex) return false; } } }};
Gas Station
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。