zoukankan      html  css  js  c++  java
  • 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

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    python之简单窗口
    hdu1237简单计算器
    BST二叉查找树的实现与操作
    huffman树入门
    hdu2043密码
    hdu1870愚人节的礼物
    hdu 2085 核反应堆
    hdu 2066 一个人的旅行(Dijkstra求最短路问题)
    hdu 2063 过山车 (二分匹配)
    hdu 2067 小兔的棋盘(Catalan数)
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13292018.html
Copyright © 2011-2022 走看看