IT技術小屋

          秋風秋雨,皆入我心

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            38 隨筆 :: 1 文章 :: 19 評論 :: 0 Trackbacks
          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.

          首先,這個題目要明確如果gas[0] + gas[1] + ... + gas[n] >= cost[0] + cost[1] + .. + cost[n],那么這個題目一定有解。因為,根據條件移項可得:
          (gas[0] - cost[0]) + (gas[1] - cost[1]) + ... + (gas[n] - cost[n]) >= 0,由于最終結果大于等于零,因此一定可以通過加法交換律,得到一個序列,使得中間結果都為非負。因此可以將算法實現如下:
           1 public class GasStation {
           2     public int canCompleteCircuit(int[] gas, int[] cost) {
           3         int sum = 0, total = 0, len = gas.length, index = -1;
           4         for (int i = 0; i < len; i++) {
           5             sum += gas[i] - cost[i];
           6             total += gas[i] - cost[i];
           7             if (sum < 0) {
           8                 index = i;
           9                 sum = 0;
          10             }
          11         }
          12         return total >= 0 ? index + 1 : -1;
          13     }
          14 }
          posted on 2013-12-19 09:29 Meng Lee 閱讀(382) 評論(1)  編輯  收藏 所屬分類: Leetcode

          評論

          # re: [Leetcode] Gas Station 2014-01-25 09:56 SunnyYoona
          (gas[0] - cost[0]) + (gas[1] - cost[1]) + ... + (gas[n] - cost[n]) >= 0
          但是并不能保證每一個(gas[i] - cost[i])都大于0

          有點疑惑。。。。  回復  更多評論
            

          主站蜘蛛池模板: 乌拉特后旗| 萝北县| 乌海市| 治县。| 新余市| 馆陶县| 博白县| 维西| 博野县| 高青县| 喀什市| 伊金霍洛旗| 太谷县| 龙岩市| 定陶县| 绵竹市| 江安县| 嘉黎县| 柞水县| 桃江县| 邵东县| 宜都市| 铜山县| 牡丹江市| 锡林郭勒盟| 葫芦岛市| 山阳县| 东莞市| 怀仁县| 淮阳县| 南开区| 耒阳市| 庄浪县| 汤阴县| 南木林县| 图们市| 英德市| 万盛区| 岳池县| 元氏县| 尚义县|