llllmz

导航

134. 加油站c

 

ji、

假设26号复试的话,只有15天复习了。

争取一个星期刷完代码随想录,最后一个星期来准备英语和重刷。

int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize) {
    int sum=0;
    int* oil=(int*)malloc(sizeof(int)*gasSize);
    for(int i=0;i<gasSize;i++){
        oil[i]=gas[i]-cost[i];
        sum+=oil[i];
    }
    if(sum<0) return -1;
    int head=0,tail=0,n=0,x=0;
    while(n!=gasSize){
        int t=x+oil[tail];
        if(t<0){
            if(head==tail){
                head=(head+1)%gasSize;
                tail=(tail+1)%gasSize;
            }else{
                n--;
                x-=oil[head];
                head=(head+1)%gasSize;
            }
        }else{
            tail=(tail+1)%gasSize;
            n++;
            x=t;
        }
    }
    return head;
}

结果:

posted on 2024-03-11 14:38  神奇的萝卜丝  阅读(18)  评论(0)    收藏  举报