134:加油站 求教大佬解题错误原因在哪里

想请教一下各位大佬能否帮我看一下此题我的解题思路错在哪里呢?

CODE 部分

class Solution {
public:
    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
        /* 假设 汽车从 0 号加油站开始出发,此时汽车的汽油量就为 0 号汽油的 汽油量。
        int start_idx=0;// 代表起始地址
        int capicity=gas[0];//代表汽车中的含量
1。从0->1  若 汽车中的汽油量capcity 大于或等于 耗费的汽油cost,此时更新汽车中 汽油的含量:
            pre_idx=(i-1+n)%n;
              capcity=capcity-cost[pre_idx]+gas[i];. gas[i%(n-1)]为最后一个车站到0 号车站的油量  需要记录一个起始车站 ,结束条件为 i(到达车站)==起始车站
2. 若 0->1 汽车若 汽车中的汽油量capcity 大于或等于 耗费的汽油cost,此时更新 起始车站以及汽油含量cap
            capicity = nums[i]
            start_idx=i;
            接下来依次遍历数组即可

        */
        int start_idx=0;// 代表起始地址
        int capcity=gas[0];//代表汽车中的含量
        int n=gas.size();
        int i=1;
        int pre_idx=0;//前一个车站的下标
         //printf("起始车站%d,剩余油量%d,到达下一站%d需要油量%d\n",start_idx,capcity,i,cost[0]);
       while(i<n){
           //需要判断一下 i=0 的时候 i-1就超出范围 此时前一个车站的下标通式就是:pre_idx=(i-1+n)%n;
            pre_idx=(i-1+n)%n;
            if(i==start_idx)// 即使准备到达起始站,也需要判断以下是否其有足够的油量让其到达
            {
                if(capcity>=cost[pre_idx])
                return start_idx;
                else
                break;
            }
            if(capcity>=cost[pre_idx]){ // 去往 i 号汽油站所需汽油  ,此时只需要判断当前结点能否形成一个环,不需要将所有的结点进行判断。
                capcity=capcity-cost[pre_idx]+gas[i];
                printf("起始车站%d,此时车辆到达%d站,剩余油量%d",start_idx,i,capcity);
            }
            else{ //小于的话 就从 i 开始出发
                capcity=gas[i];
                start_idx=i;
            }
            i=(i+1)%n;   // i 如何更新
           // printf("i=%d",i);
        printf("起始车站%d,剩余油量%d,到达下一站%d需要油量%d\n",start_idx,capcity,i,cost[pre_idx]);
        }
        return -1;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值