首页 > 其他 > 详细

LeetCode "Gas Station" - TO BE REVISED

时间:2014-08-21 14:37:54      阅读:259      评论:0      收藏:0      [点我收藏+]

First I thought of a DP solution.. but TLE. So there must be a O(n). I thought of Mono-Queue.. but looks too complex.

So what is the naive solution? O(n^2) of course. If we pick next start station smartly, we can make it linear: http://blog.csdn.net/kenden23/article/details/14106137

Smart idea... I need practice more and think more....

class Solution {
public:
    int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
        size_t cnt = gas.size();
        if (cnt == 1)
        {
            if (gas[0] >= cost[0]) return 0;
            return -1;
        }

        for (int i = 0; i < cnt; i++)
        {
            int delta = 0;
            int step;
            bool bFound = true;
            for (step = 0; step < cnt - 1; step++)
            {
                delta += gas[(i + step) % cnt] - cost[(i + step) % cnt];
                if (delta < 0)
                {
                    i += step;
                    bFound = false;
                    break;
                }
            }
            if (!bFound) continue;
            if (delta > 0) return i;
            else i += step - 1;
        }

        return -1;
    }
};

LeetCode "Gas Station" - TO BE REVISED,布布扣,bubuko.com

LeetCode "Gas Station" - TO BE REVISED

原文:http://www.cnblogs.com/tonix/p/3926979.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!