zoukankan      html  css  js  c++  java
  • LeetCode——加油站

    Q:环形路上有n个加油站,第i个加油站的汽油量是gas[i].
    你有一辆车,车的油箱可以无限装汽油。从加油站i走到下一个加油站(i+1)花费的油量是cost[i],你从一个加油站出发,刚开始的时候油箱里面没有汽油。
    求从哪个加油站出发可以在环形路上走一圈。返回加油站的下标,如果没有答案的话返回-1。
    注意:
    答案保证唯一。
    A:
    假设从站点 i 出发,到达站点 k 之前,依然能保证油箱里油没见底儿,从k 出发后,见底儿了。那么就说明 diff[i] + diff[i+1] + ... + diff[k] < 0,而除掉diff[k]以外,从diff[i]开始的累加都是 >= 0的。也就是说diff[i] 也是 >= 0的,这个时候我们还有必要从站点 i + 1 尝试吗?仔细一想就知道:车要是从站点 i+1出发,到达站点k后,甚至还没到站点k,油箱就见底儿了,因为少加了站点 i 的油.

        public static int canCompleteCircuit(int[] gas, int[] cost) {
            if (gas.length == 0 || cost.length == 0)
                return -1;
            int j;
            int start = -1;
    
            for (int i = gas.length - 1; i >= 0; i--) {
                int remain = 0;
                j = i;
                while (true) {
                    remain += (gas[j] - cost[j]);
                    if (remain < 0)
                        break;
                    if (j == i - 1 || (i == 0 && j == gas.length - 1)) {
                        start = i;
                        break;
                    }
                    j++;
                    if (j >= gas.length)
                        j = 0;
                }
                if (start != -1)
                    break;
            }
            return start;
        }
    
  • 相关阅读:
    strcpy_s 和 strcat_s的用法 简单
    SAP更改商品的授权
    SAP设置默认的登录Client Code
    SAP安装windwos XP Sap的show 教程什么都看不到,的解决办法
    SAP用户管理
    sap 常用事务代码
    SAP-系统表
    随笔
    SAP如何学好SAP BASIS
    SAP IMG
  • 原文地址:https://www.cnblogs.com/xym4869/p/12463310.html
Copyright © 2011-2022 走看看