leetcode——134.加油站

Posted 欣姐姐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode——134.加油站相关的知识,希望对你有一定的参考价值。

自己完成了,但是效果好像并不怎么样

public int canCompleteCircuit(int[] gas, int[] cost) {
        int len = gas.length;
        if(len == 1){
            return gas[0] >= cost[0]?0:-1;
        }
        int sum1 = 0,sum2 = 0;
        for(int i = 0;i<len;i++){
            sum1 += gas[i];
            sum2 += cost[i];
        }
        if(sum2 > sum1){
            return -1;
        }
        int start = 0;
        while (start < len) {
            while(gas[start] < cost[start]) {
                start++;
            }
            int begin = start;
            int res = gas[start];
            for(;begin <= len;begin++) {
                if(begin == len){
                    begin = 0;
                }
                res = res - cost[begin] + gas[(begin + 1)%len];  //res小于0的时候,要移动start的位置,要怎么做到
                if(res < 0 || res - gas[(begin + 1)%len] < 0){
                    start++;
                    break;
                }
                if(start - 2 >=  0 && begin == start -2 || start - 2 < 0 && begin == len + start - 2){
                    if(res >= cost[(start - 1 + len)%len]){
                        return start;
                    }else{
                        return -1;
                    }
                }
            }
        }
        return -1;
    }

 

 

public int canCompleteCircuit(int[] gas, int[] cost) {
        int total = 0;
        int j = -1;
        for(int i = 0,sum = 0;i<gas.length;i++){
            sum += gas[i] - cost[i];
            total += gas[i] - cost[i];
            if(sum < 0){
                j = i;
                sum = 0;
            }
        }
        return total >= 0?j+1:-1;
    }

 

 多简洁。

——2020.7.13

以上是关于leetcode——134.加油站的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 134. 加油站 模拟优化

leetcode 134. 加油站 模拟优化

Leetcode 134. 加油站

LeetCode 134.加油站

[leetcode]134. Gas Station加油站

leetcode——134.加油站