0
点赞
收藏
分享

微信扫一扫

(差值贪心)加油站 Leetcode32

JakietYu 2022-02-17 阅读 38

 

 

 

class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {

        int[] sub = new int[gas.length];    //本题关键在于利用gas[i]和cost[i]相减求出差值sub[i]
        int all_money=0;                    //利用差值sub[i]来进行贪心寻找可行解
        int start = 0;
        for(int i=0;i<gas.length;i++){
            sub[i] = gas[i]-cost[i];
        }
        if(sum(sub)<0){
            return -1;
        }

        for(int i = 0;i<sub.length;i++){
            all_money+=sub[i];
            if(all_money<0){
                start=i+1;
                all_money=0;
            }
        }

        return start;

    }
    public int sum(int[] a){
        int s=0;
        for(int num: a){
            s+=num;
        }
        return s;
    }
}
举报

相关推荐

0 条评论