日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每天一道LeetCode-----存在一个由加油站组成的环路,判断是否可以从某个加油站出发环绕一周

發布時間:2024/4/19 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天一道LeetCode-----存在一个由加油站组成的环路,判断是否可以从某个加油站出发环绕一周 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Gas Station

原題鏈接Gas Station

加油站問題,判斷是否能夠從一個加油站開始行走環繞一周,其中gas[i]表示在第i個加油站可以獲得的油量,cost[i]表示從第i個加油站到達第i+1個加油站所需的油量

如果gas[i] >= cost[i],那么可以說在加油站i處是盈利的

那么可以從每個盈利的加油站出發,判斷是否可以環繞一周,當然這里有個小技巧,就是如果假設i, i+1, i+2, …, j這幾個連續加油站都是盈利的,那么就只需要從i出發就可以,無需判斷從i+1,i+2,…,j這幾個加油站出發的情況

代碼如下

class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {if(gas.empty()) return -1;int n = gas.size();int start = 0;while(start < n){if(gas[start] >= cost[start]){if(run(gas, cost, start))return start;while(start + 1 < n && gas[start + 1] >= cost[start + 1])++start;}++start;}return -1;} private:bool run(vector<int>& gas, vector<int>& cost, int start){int curPos = start;int curGas = gas[start];int n = gas.size();while(true){curGas -= cost[curPos];if(curGas < 0)return false;curPos = (curPos + 1) % n;if(curPos == start)return true;curGas += gas[curPos];}} };

總結

以上是生活随笔為你收集整理的每天一道LeetCode-----存在一个由加油站组成的环路,判断是否可以从某个加油站出发环绕一周的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。